{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "srand(1234);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ベクトル(リスト)の処理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ベクトルを作る"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0-element Array{Any,1}"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = []  # 何でも入るリスト"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0-element Array{Int64,1}"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = Int[]  # Int型のみのリスト"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0-element Array{Int64,1}"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = Vector{Int}()  #　Int[]と同じ"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Int64,1}:\n",
       " 1\n",
       " 2\n",
       " 3"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = [1,2,3]  # 3要素からなるリスト"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### すべて同じ値のベクトルを作る"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10-element Array{Int64,1}:\n",
       " 42\n",
       " 42\n",
       " 42\n",
       " 42\n",
       " 42\n",
       " 42\n",
       " 42\n",
       " 42\n",
       " 42\n",
       " 42"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fill(42, 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4-element Array{String,1}:\n",
       " \"foo\"\n",
       " \"foo\"\n",
       " \"foo\"\n",
       " \"foo\""
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fill(\"foo\", 4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ベクトルに要素を追加する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Int64,1}:\n",
       " 1\n",
       " 2\n",
       " 3"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = [1,2,3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4-element Array{Int64,1}:\n",
       " 1\n",
       " 2\n",
       " 3\n",
       " 4"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "push!(x, 4) # 右に追加"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5-element Array{Int64,1}:\n",
       " 0\n",
       " 1\n",
       " 2\n",
       " 3\n",
       " 4"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "unshift!(x, 0)  # 左に追加"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8-element Array{Int64,1}:\n",
       " 0\n",
       " 1\n",
       " 2\n",
       " 3\n",
       " 4\n",
       " 5\n",
       " 6\n",
       " 7"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "append!(x, [5,6,7])  # 別のベクトルを追加"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ベクトルの要素を削除する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5-element Array{Int64,1}:\n",
       " 1\n",
       " 2\n",
       " 3\n",
       " 4\n",
       " 5"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = [1,2,3,4,5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pop!(x)  # 右端を削除"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4-element Array{Int64,1}:\n",
       " 1\n",
       " 2\n",
       " 3\n",
       " 4"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "shift!(x)  # 左端を削除"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Int64,1}:\n",
       " 2\n",
       " 3\n",
       " 4"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2-element Array{Int64,1}:\n",
       " 2\n",
       " 4"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "deleteat!(x, 2)  # 特定の場所の要素を削除"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ベクトルがソート済みかを判定する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "issorted([1,2,3,4])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "false"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "issorted([1,3,2,4])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ベクトルをソートする"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7-element Array{Int64,1}:\n",
       " 1\n",
       " 5\n",
       " 4\n",
       " 3\n",
       " 7\n",
       " 6\n",
       " 2"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = [1,5,4,3,7,6,2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7-element Array{Int64,1}:\n",
       " 1\n",
       " 2\n",
       " 3\n",
       " 4\n",
       " 5\n",
       " 6\n",
       " 7"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sort(x)  # ベクトルを新しく作る"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7-element Array{Int64,1}:\n",
       " 7\n",
       " 6\n",
       " 5\n",
       " 4\n",
       " 3\n",
       " 2\n",
       " 1"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sort(x, rev=true)  # 逆順でソート"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7-element Array{Int64,1}:\n",
       " 1\n",
       " 2\n",
       " 3\n",
       " 4\n",
       " 5\n",
       " 6\n",
       " 7"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sort!(x)  # ベクトルを上書きする"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ベクトルの要素を逆順にする"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4-element Array{Int64,1}:\n",
       " 1\n",
       " 2\n",
       " 3\n",
       " 4"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = [1,2,3,4]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4-element Array{Int64,1}:\n",
       " 4\n",
       " 3\n",
       " 2\n",
       " 1"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reverse(x)  # ベクトルを新しく作る"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x == [1,2,3,4]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4-element Array{Int64,1}:\n",
       " 4\n",
       " 3\n",
       " 2\n",
       " 1"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reverse!(x)  # ベクトルを上書きする"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "false"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x == [1,2,3,4]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ベクトルをシャッフルする"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6-element Array{Int64,1}:\n",
       " 1\n",
       " 2\n",
       " 3\n",
       " 4\n",
       " 5\n",
       " 6"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = [1,2,3,4,5,6]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6-element Array{Int64,1}:\n",
       " 2\n",
       " 1\n",
       " 3\n",
       " 6\n",
       " 4\n",
       " 5"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "shuffle(x)  # ベクトルを新しく作る"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x == [1,2,3,4,5,6]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6-element Array{Int64,1}:\n",
       " 6\n",
       " 1\n",
       " 5\n",
       " 2\n",
       " 3\n",
       " 4"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "shuffle!(x)  # ベクトルを上書きする"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "false"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x == [1,2,3,4,5,6]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ベクトルを結合する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6-element Array{Int64,1}:\n",
       " 1\n",
       " 2\n",
       " 3\n",
       " 4\n",
       " 5\n",
       " 6"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vcat([1,2,3], [4,5,6])  # 縦方向 => ベクトル"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3×2 Array{Int64,2}:\n",
       " 1  4\n",
       " 2  5\n",
       " 3  6"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hcat([1,2,3], [4,5,6])  # 横方向 => 行列"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 辞書"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 辞書を作る"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Dict{Any,Any} with 0 entries"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Dict()  # 何でも入る空の辞書"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Dict{String,Int64} with 0 entries"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Dict{String,Int}()  # Stringがキー、Intが値の空の辞書"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Dict{String,Int64} with 2 entries:\n",
       "  \"two\" => 2\n",
       "  \"one\" => 1"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Dict(\"one\" => 1, \"two\" => 2)  # 初期値のある辞書"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 辞書があるキーを持つか判定する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "haskey(Dict(\"one\" => 1, \"two\" => 2), \"two\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "false"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "haskey(Dict(\"one\" => 1), \"two\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 辞書の値を取り出す"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Dict{String,Int64} with 2 entries:\n",
       "  \"two\" => 2\n",
       "  \"one\" => 1"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d = Dict(\"one\" => 1, \"two\" => 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d[\"one\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "ename": "LoadError",
     "evalue": "\u001b[91mKeyError: key \"three\" not found\u001b[39m",
     "output_type": "error",
     "traceback": [
      "\u001b[91mKeyError: key \"three\" not found\u001b[39m",
      "",
      "Stacktrace:",
      " [1] \u001b[1mgetindex\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::Dict{String,Int64}, ::String\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./dict.jl:474\u001b[22m\u001b[22m"
     ]
    }
   ],
   "source": [
    "d[\"three\"]  # キーがなければエラー"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### デフォルト値を設定して辞書の値を取り出す"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Dict{String,Int64} with 2 entries:\n",
       "  \"two\" => 2\n",
       "  \"one\" => 1"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d = Dict(\"one\" => 1, \"two\" => 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get(d, \"one\", 0)  # 第三引数がデフォルト値"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get(d, \"three\", 0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 辞書に値を代入する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Dict{String,Int64} with 2 entries:\n",
       "  \"two\" => 2\n",
       "  \"one\" => 1"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d = Dict(\"one\" => 1, \"two\" => 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d[\"three\"] = 3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Dict{String,Int64} with 3 entries:\n",
       "  \"two\"   => 2\n",
       "  \"one\"   => 1\n",
       "  \"three\" => 3"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 辞書のキー・値を取り出す"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Dict{String,Int64} with 2 entries:\n",
       "  \"two\" => 2\n",
       "  \"one\" => 1"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d = Dict(\"one\" => 1, \"two\" => 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Base.KeyIterator for a Dict{String,Int64} with 2 entries. Keys:\n",
       "  \"two\"\n",
       "  \"one\""
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "keys(d)  # イテレータとして取り出す"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2-element Array{String,1}:\n",
       " \"two\"\n",
       " \"one\""
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "collect(keys(d))  # ベクトルとして取り出す"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Base.ValueIterator for a Dict{String,Int64} with 2 entries. Values:\n",
       "  2\n",
       "  1"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "values(d)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2-element Array{Int64,1}:\n",
       " 2\n",
       " 1"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "collect(values(d))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 集合"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 集合を作る"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Set{Int64}()"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Set{Int}()  # 空の集合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Set([2, 3, 1])"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Set([1,2,3])  # ベクトルから"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Set(String[\"bar\", \"baz\", \"foo\"])"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Set([\"foo\", \"bar\", \"baz\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 集合にある要素があるか判定する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "2 in Set([1,2,3])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "false"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "4 in Set([1,2,3])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "2 ∈ Set([1,2,3])  # ∈ は in の別名"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 集合に要素を追加する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Set([4, 2, 3, 1])"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s = Set([1,2,3])\n",
    "push!(s, 4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Set([4, 2, 3, 5, 6, 1])"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "union!(s, [5, 6])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 和集合・積集合・差集合をとる"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Set([4, 2, 3, 5])"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s1 = Set([1,2,3])\n",
    "s2 = Set([2,3,4,5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Set([4, 2, 3, 5, 1])"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "union(s1, s2)  # 和集合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Set([4, 2, 3, 5, 1])"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s1 ∪ s2  # \\cupは和集合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Set([2, 3])"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "intersect(s1, s2)  # 積集合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Set([2, 3])"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s1 ∩ s2  # \\capは積集合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Set([1])"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "setdiff(s1, s2)  # 差集合"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 集合の要素をベクトルとして取り出す"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Int64,1}:\n",
       " 2\n",
       " 3\n",
       " 1"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s = Set([1,2,3])\n",
    "collect(s)  # 順番は順不同"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 文字列処理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 文字数をカウントする"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "length(\"foo\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "length(\"αβγ\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 文字のバイト数を得る"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sizeof(\"foo\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sizeof(\"αβγ\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 文字列をUTF-8のバイト列に変換する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{UInt8,1}:\n",
       " 0x66\n",
       " 0x6f\n",
       " 0x6f"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "convert(Vector{UInt8}, \"foo\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6-element Array{UInt8,1}:\n",
       " 0xce\n",
       " 0xb1\n",
       " 0xce\n",
       " 0xb2\n",
       " 0xce\n",
       " 0xb3"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "convert(Vector{UInt8}, \"αβγ\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{UInt8,1}:\n",
       " 0x66\n",
       " 0x6f\n",
       " 0x6f"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Vector{UInt8}(\"foo\")  # これもOK"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### UTF-8のバイト列を文字列に変換する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"foo\""
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "convert(String, [0x66, 0x6f, 0x6f])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"αβγ\""
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "convert(String, [0xce, 0xb1, 0xce, 0xb2, 0xce, 0xb3])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"foo\""
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "String([0x66, 0x6f, 0x6f])  # これもOK"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 特定のパターンを置換する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"hello, there\""
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "replace(\"hello, world\", \"world\", \"there\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"abracadabra\""
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "replace(\"a5b4ra221ca1d856ab86r7a7\", r\"\\d+\", \"\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 文字列を文字の配列に分割する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Char,1}:\n",
       " 'f'\n",
       " 'o'\n",
       " 'o'"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "collect(\"foo\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Char,1}:\n",
       " 'α'\n",
       " 'β'\n",
       " 'γ'"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "collect(\"αβγ\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 文字列を連結する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"foobar\""
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\"foo\" * \"bar\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"foo123\""
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "string(\"foo\", 123)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"foo,bar,baz\""
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "join([\"foo\", \"bar\", \"baz\"], \",\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 文字列を分割する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{SubString{String},1}:\n",
       " \"foo\"\n",
       " \"bar\"\n",
       " \"baz\""
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "split(\"foo,bar,baz\", \",\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{SubString{String},1}:\n",
       " \"123\"\n",
       " \"45\" \n",
       " \"567\""
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "split(\"123 45   567\", r\"\\s+\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 特定の幅で左詰め・右詰めする"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"123  \""
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rpad(123, 5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"  123\""
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lpad(123, 5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " left aligned: 123  \n",
      "right aligned:   123\n"
     ]
    }
   ],
   "source": [
    "println(\" left aligned: \", rpad(123, 5))\n",
    "println(\"right aligned: \", lpad(123, 5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"  123\""
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@sprintf(\"%5d\", 123)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 末尾の改行を除く"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"foo bar\""
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "chomp(\"foo bar\\n\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"foo bar\""
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "chomp(\"foo bar\\r\\n\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 左右の空白を除く"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"foo bar\""
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "strip(\" foo bar \")   # 両側"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"foo bar \""
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lstrip(\" foo bar \")  # 左のみ"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\" foo bar\""
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rstrip(\" foo bar \")  # 右のみ"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 大文字・小文字に変換する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"FOO\""
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "uppercase(\"foo\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"foo\""
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lowercase(\"FOO\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 入出力"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ファイルをテキストとして読み込む"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"Juliaは技術計算のための動的言語で、以下の様な機能を備えています。\\n\\n- 多重ディスパッチ\\n- JITコンパイル\\n- マクロなどのメタプログラミング\\n\""
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "readstring(\"data/julia.md\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5-element Array{String,1}:\n",
       " \"Juliaは技術計算のための動的言語で、以下の様な機能を備えています。\"\n",
       " \"\"                                   \n",
       " \"- 多重ディスパッチ\"                         \n",
       " \"- JITコンパイル\"                         \n",
       " \"- マクロなどのメタプログラミング\"                  "
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "readlines(\"data/julia.md\")  # 改行で分割"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ファイルを行毎に読み込む"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1: Juliaは技術計算のための動的言語で、以下の様な機能を備えています。\n",
      "2: \n",
      "3: - 多重ディスパッチ\n",
      "4: - JITコンパイル\n",
      "5: - マクロなどのメタプログラミング\n"
     ]
    }
   ],
   "source": [
    "i = 1\n",
    "for line in eachline(\"data/julia.md\")\n",
    "    println(i, \": \", line)\n",
    "    i += 1\n",
    "end"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ファイルをバイナリデータとして読み込む"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "193-element Array{UInt8,1}:\n",
       " 0x4a\n",
       " 0x75\n",
       " 0x6c\n",
       " 0x69\n",
       " 0x61\n",
       " 0xe3\n",
       " 0x81\n",
       " 0xaf\n",
       " 0xe6\n",
       " 0x8a\n",
       " 0x80\n",
       " 0xe8\n",
       " 0xa1\n",
       "    ⋮\n",
       " 0x83\n",
       " 0xa9\n",
       " 0xe3\n",
       " 0x83\n",
       " 0x9f\n",
       " 0xe3\n",
       " 0x83\n",
       " 0xb3\n",
       " 0xe3\n",
       " 0x82\n",
       " 0xb0\n",
       " 0x0a"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "read(\"data/julia.md\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ファイルが存在するかを調べる"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "isfile(\"data/julia.md\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "false"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "isfile(\"data/python.md\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ファイルサイズを得る"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "193"
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "filesize(\"data/julia.md\")  # 単位はバイト"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ファイルを開閉する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "IOStream(<file data/julia.md>)"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "file = open(\"data/julia.md\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "isopen(file)  # ファイルが開いているか判定する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"Juliaは技術計算のための動的言語で、以下の様な機能を備えています。\""
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "readline(file)  # 1行読み込む"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "close(file)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "false"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "isopen(file)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 開いているファイルの現在位置を得る"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "IOStream(<file data/julia.md>)"
      ]
     },
     "execution_count": 112,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "file = open(\"data/julia.md\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 113,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "position(file)  # 最初の位置は0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "95"
      ]
     },
     "execution_count": 114,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sizeof(readline(file))  # 1行(改行含む)を読む"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "96"
      ]
     },
     "execution_count": 115,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "position(file)  # 1行分読み込み位置が進む"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "false"
      ]
     },
     "execution_count": 116,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eof(file)  # 読み込み位置は末尾か判定"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "97"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sizeof(read(file))  # 残りすべてを読み込む"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 118,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eof(file)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 開いたファイルを必ず閉じる"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Juliaは技術計算のための動的言語で、以下の様な機能を備えています。\n"
     ]
    },
    {
     "ename": "LoadError",
     "evalue": "\u001b[91mDivideError: integer division error\u001b[39m",
     "output_type": "error",
     "traceback": [
      "\u001b[91mDivideError: integer division error\u001b[39m",
      "",
      "Stacktrace:",
      " [1] \u001b[1mopen\u001b[22m\u001b[22m\u001b[1m(\u001b[22m\u001b[22m::##1#2, ::String\u001b[1m)\u001b[22m\u001b[22m at \u001b[1m./iostream.jl:152\u001b[22m\u001b[22m"
     ]
    }
   ],
   "source": [
    "# open ... do ... endはdoの中でエラーが起きても必ずファイルを閉じる\n",
    "open(\"data/julia.md\") do file\n",
    "    println(readline(file))\n",
    "    div(1, 0)  # エラー！\n",
    "end"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### gzipの圧縮ファイルを読み込む"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "using CodecZlib  # https://github.com/bicycle1885/CodecZlib.jl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "TranscodingStreams.TranscodingStream{CodecZlib.GzipDecompression,IOStream}(<state=idle>)"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "file = GzipDecompressionStream(open(\"data/julia.md.gz\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5-element Array{String,1}:\n",
       " \"Juliaは技術計算のための動的言語で、以下の様な機能を備えています。\"\n",
       " \"\"                                   \n",
       " \"- 多重ディスパッチ\"                         \n",
       " \"- JITコンパイル\"                         \n",
       " \"- マクロなどのメタプログラミング\"                  "
      ]
     },
     "execution_count": 122,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "readlines(file)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "close(file)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### テキストをファイルに書き込む"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "22"
      ]
     },
     "execution_count": 124,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "write(\"data/output.txt\", \"アブラカダブラ\\n\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"アブラカダブラ\\n\""
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "readstring(\"data/output.txt\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "file = open(\"data/output.txt\", \"w\")\n",
    "println(file, \"寿限無寿限無\")\n",
    "close(file)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"寿限無寿限無\\n\""
      ]
     },
     "execution_count": 127,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "readstring(\"data/output.txt\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### オブジェクトをファイルにシリアライズする"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "file = open(\"data/object.dat\", \"w\")\n",
    "serialize(file, \"テキスト\")\n",
    "serialize(file, 3.14)\n",
    "serialize(file, [10, 20, 30])\n",
    "serialize(file, Dict(\"愛里寿\" => \"センチュリオン\", \"ミカ\" => \"BT-42\"))\n",
    "close(file)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "deserialize(file) = \"テキスト\"\n",
      "deserialize(file) = 3.14\n",
      "deserialize(file) = [10, 20, 30]\n",
      "deserialize(file) = Dict(\"ミカ\"=>\"BT-42\",\"愛里寿\"=>\"センチュリオン\")\n"
     ]
    }
   ],
   "source": [
    "file = open(\"data/object.dat\")\n",
    "while !eof(file)\n",
    "    @show deserialize(file)\n",
    "end\n",
    "close(file)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 外部コマンド"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 外部コマンドを実行する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hello\n"
     ]
    }
   ],
   "source": [
    "run(`echo \"hello\"`)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### コマンドの出力を読み込む"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"julia.md\\njulia.md.gz\\nobject.dat\\noutput.txt\\n\""
      ]
     },
     "execution_count": 131,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "readstring(`ls data`)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "43-element Array{UInt8,1}:\n",
       " 0x6a\n",
       " 0x75\n",
       " 0x6c\n",
       " 0x69\n",
       " 0x61\n",
       " 0x2e\n",
       " 0x6d\n",
       " 0x64\n",
       " 0x0a\n",
       " 0x6a\n",
       " 0x75\n",
       " 0x6c\n",
       " 0x69\n",
       "    ⋮\n",
       " 0x0a\n",
       " 0x6f\n",
       " 0x75\n",
       " 0x74\n",
       " 0x70\n",
       " 0x75\n",
       " 0x74\n",
       " 0x2e\n",
       " 0x74\n",
       " 0x78\n",
       " 0x74\n",
       " 0x0a"
      ]
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "read(`ls data`)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(Pipe(RawFD(-1) closed => RawFD(51) open, 0 bytes waiting), Process(`ls data`, ProcessExited(0)))"
      ]
     },
     "execution_count": 133,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipe, proc = open(`ls data`)  # パイプとプロセス"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "julia.md\n",
      "julia.md.gz\n",
      "object.dat\n",
      "output.txt\n"
     ]
    }
   ],
   "source": [
    "while !eof(pipe)\n",
    "    println(readline(pipe))\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Process(`ls data`, ProcessExited(0))"
      ]
     },
     "execution_count": 135,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "proc"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 関数型プログラミング"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 条件を満たす要素を残す"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Int64,1}:\n",
       " 1\n",
       " 3\n",
       " 5"
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "filter(isodd, [1,2,3,4,5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Int64,1}:\n",
       " 3\n",
       " 4\n",
       " 5"
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "filter(x->x>2, [1,2,3,4,5])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 条件を満たす要素があるか確認する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 138,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "any(isodd, [1,2,3,4])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "false"
      ]
     },
     "execution_count": 139,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "any(isodd, [2,4,6,8])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### すべての要素が条件を満たすかを確認する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "false"
      ]
     },
     "execution_count": 140,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "all(isodd, [1,2,3,4])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 141,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "all(isodd, [1,3,5,7])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 全要素に同じ関数を適用する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4-element Array{Float64,1}:\n",
       " 0.0     \n",
       " 0.841471\n",
       " 0.909297\n",
       " 0.14112 "
      ]
     },
     "execution_count": 142,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "map(sin, [0.0, 1.0, 2.0, 3.0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4-element Array{Float64,1}:\n",
       " 0.0     \n",
       " 0.841471\n",
       " 0.909297\n",
       " 0.14112 "
      ]
     },
     "execution_count": 143,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sin.([0.0, 1.0, 2.0, 3.0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 関数を適用して畳み込みをする"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6"
      ]
     },
     "execution_count": 144,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "foldl(+, 0, [1,2,3])  # 総和の計算"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6"
      ]
     },
     "execution_count": 145,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "foldl(+, [1,2,3])  # 第二引数は省略可"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       ":(if x == 1 # In[146], line 2:\n",
       "        print(1)\n",
       "    else  # In[146], line 2:\n",
       "        if x == 2 # In[146], line 2:\n",
       "            print(2)\n",
       "        else  # In[146], line 2:\n",
       "            if x == 3 # In[146], line 2:\n",
       "                print(3)\n",
       "            else  # In[146], line 2:\n",
       "                nothing\n",
       "            end\n",
       "        end\n",
       "    end)"
      ]
     },
     "execution_count": 146,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 分岐する式の作成\n",
    "foldr((x, r)->:(if x == $(x); print($(x)); else; $(r); end), :(nothing), [1,2,3])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ベンチマーク・プロファイル"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 関数の実行時間を測定する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.008851748"
      ]
     },
     "execution_count": 147,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sort(randn(100000))  # コンパイルのため測定前に一度実行する\n",
    "@elapsed sort(randn(100000))  # 単位は秒"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10-element Array{Float64,1}:\n",
       " 0.00876565\n",
       " 0.0156572 \n",
       " 0.00870781\n",
       " 0.00845791\n",
       " 0.00924334\n",
       " 0.0104665 \n",
       " 0.00999714\n",
       " 0.0109102 \n",
       " 0.0105973 \n",
       " 0.00948196"
      ]
     },
     "execution_count": 148,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[@elapsed sort(randn(100000)) for _ in 1:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 関数のメモリ割り付けを測定する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1600240"
      ]
     },
     "execution_count": 149,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sort(randn(100000))  # コンパイルのため測定前に一度実行する\n",
    "@allocated sort(randn(100000))  # 単位はバイト"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 150,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10-element Array{Int64,1}:\n",
       " 1600240\n",
       " 1600240\n",
       " 1600240\n",
       " 1600240\n",
       " 1600240\n",
       " 1600240\n",
       " 1600240\n",
       " 1600240\n",
       " 1600240\n",
       " 1600240"
      ]
     },
     "execution_count": 150,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[@allocated sort(randn(100000)) for _ in 1:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 関数の実行時間とメモリ割り付けを同時に測定する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  0.008674 seconds (9 allocations: 1.526 MiB)\n"
     ]
    }
   ],
   "source": [
    "sort(randn(100000))  # コンパイルのため測定前に一度実行する\n",
    "@time sort(randn(100000));"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  0.011001 seconds (5 allocations: 1.526 MiB)\n",
      "  0.010731 seconds (5 allocations: 1.526 MiB)\n",
      "  0.010590 seconds (5 allocations: 1.526 MiB)\n",
      "  0.008951 seconds (5 allocations: 1.526 MiB)\n",
      "  0.009545 seconds (5 allocations: 1.526 MiB)\n",
      "  0.008640 seconds (5 allocations: 1.526 MiB)\n",
      "  0.008199 seconds (5 allocations: 1.526 MiB)\n",
      "  0.008194 seconds (5 allocations: 1.526 MiB)\n",
      "  0.009020 seconds (5 allocations: 1.526 MiB)\n",
      "  0.008863 seconds (5 allocations: 1.526 MiB)\n"
     ]
    }
   ],
   "source": [
    "for _ in 1:10\n",
    "    @time sort(randn(100000))\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.52587890625"
      ]
     },
     "execution_count": 153,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "100000 * sizeof(Float64) * 2 / 1024^2  # 100000要素の倍精度浮動小数点数のメモリ割り当て量 (MiB)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 詳細なベンチマークを行う"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "using BenchmarkTools  # https://github.com/JuliaCI/BenchmarkTools.jl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "BenchmarkTools.Trial: \n",
       "  memory estimate:  1.53 MiB\n",
       "  allocs estimate:  5\n",
       "  --------------\n",
       "  minimum time:     7.214 ms (0.00% GC)\n",
       "  median time:      8.233 ms (0.00% GC)\n",
       "  mean time:        8.661 ms (1.33% GC)\n",
       "  maximum time:     25.404 ms (0.00% GC)\n",
       "  --------------\n",
       "  samples:          577\n",
       "  evals/sample:     1"
      ]
     },
     "execution_count": 155,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@benchmark sort(randn(100000))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "BenchmarkTools.Trial: \n",
       "  memory estimate:  400 bytes\n",
       "  allocs estimate:  3\n",
       "  --------------\n",
       "  minimum time:     421.925 ns (0.00% GC)\n",
       "  median time:      452.987 ns (0.00% GC)\n",
       "  mean time:        554.083 ns (3.35% GC)\n",
       "  maximum time:     19.120 μs (0.00% GC)\n",
       "  --------------\n",
       "  samples:          10000\n",
       "  evals/sample:     199"
      ]
     },
     "execution_count": 156,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@benchmark sort(randn(10))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### プロファイルを取る"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "bubblesort (generic function with 1 method)"
      ]
     },
     "execution_count": 157,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "function bubblesort(x)\n",
    "    x = copy(x)\n",
    "    swapped = true\n",
    "    while swapped\n",
    "        swapped = false\n",
    "        for i in 1:endof(x)-1\n",
    "            if x[i+1] < x[i]\n",
    "                x[i+1], x[i] = x[i], x[i+1]\n",
    "                swapped = true\n",
    "            end\n",
    "        end\n",
    "    end\n",
    "    return x\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10-element Array{Float64,1}:\n",
       " -1.79628 \n",
       " -1.73885 \n",
       " -0.460956\n",
       " -0.450571\n",
       " -0.151273\n",
       "  0.342973\n",
       "  0.474332\n",
       "  0.617031\n",
       "  0.710638\n",
       "  0.768515"
      ]
     },
     "execution_count": 158,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bubblesort(randn(10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "x = randn(10000)\n",
    "Profile.clear()\n",
    "@profile bubblesort(x);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "196 ./task.jl:335; (::IJulia.##11#14)()\n",
      " 1   ...Julia/src/eventloop.jl:5; eventloop(::ZMQ.Socket)\n",
      "  1 ...v0.6/IJulia/src/msg.jl:87; recv_ipython(::ZMQ.Socket)\n",
      "   1 ....6/JSON/src/Parser.jl:375; #parse#1(::Type{Dict{String,Any}}...\n",
      "    1 ....6/JSON/src/Parser.jl:158; parse_value(::JSON.Parser.Memory...\n",
      "     1 ....6/JSON/src/Parser.jl:201; parse_object(::JSON.Parser.Memor...\n",
      " 195 ...Julia/src/eventloop.jl:8; eventloop(::ZMQ.Socket)\n",
      "  195 ...rc/execute_request.jl:160; execute_request(::ZMQ.Socket, ::...\n",
      "   195 ./loading.jl:515; include_string(::String, ::String)\n",
      "    195 ./<missing>:?; anonymous\n",
      "     195 ./profile.jl:23; macro expansion\n",
      "      53  ./In[157]:6; bubblesort(::Array{Float64,1})\n",
      "      109 ./In[157]:7; bubblesort(::Array{Float64,1})\n",
      "      31  ./In[157]:8; bubblesort(::Array{Float64,1})\n",
      "      2   ./In[157]:9; bubblesort(::Array{Float64,1})\n"
     ]
    }
   ],
   "source": [
    "Profile.print()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数値の計算"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 奇数・偶数を判定する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 161,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "isodd(41)   # 奇数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 162,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iseven(42)  # 偶数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 素数判定する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "using Primes  # https://github.com/JuliaMath/Primes.jl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "false"
      ]
     },
     "execution_count": 164,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "isprime(42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 165,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "isprime(43)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 素数列を生成する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "using Primes  # https://github.com/JuliaMath/Primes.jl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 167,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "15-element Array{Int64,1}:\n",
       "  2\n",
       "  3\n",
       "  5\n",
       "  7\n",
       " 11\n",
       " 13\n",
       " 17\n",
       " 19\n",
       " 23\n",
       " 29\n",
       " 31\n",
       " 37\n",
       " 41\n",
       " 43\n",
       " 47"
      ]
     },
     "execution_count": 167,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "primes(50)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 商を計算する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8"
      ]
     },
     "execution_count": 168,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "div(42, 5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 169,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8.4"
      ]
     },
     "execution_count": 169,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "42 / 5  # 整数 / 整数 = 浮動小数点数 になるので注意"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 剰余を計算する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 170,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "42 % 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 171,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 171,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rem(42, 5)  # 上と同じ"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 絶対値を計算する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "42"
      ]
     },
     "execution_count": 172,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "abs(-42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "42"
      ]
     },
     "execution_count": 173,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "abs(42)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 排他的論理和を計算する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "9"
      ]
     },
     "execution_count": 174,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xor(42, 35)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "9"
      ]
     },
     "execution_count": 175,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "42 ⊻ 35  # 上と同じ(\\xor)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 線形代数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ベクトルの和を計算する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Float64,1}:\n",
       " -1.0\n",
       "  3.0\n",
       "  0.0"
      ]
     },
     "execution_count": 176,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = [1.0, 2.0, 3.0]\n",
    "y = [-1.0, 3.0, 0.0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 177,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Float64,1}:\n",
       " 0.0\n",
       " 5.0\n",
       " 3.0"
      ]
     },
     "execution_count": 177,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x + y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 178,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Float64,1}:\n",
       "  2.0\n",
       " -1.0\n",
       "  3.0"
      ]
     },
     "execution_count": 178,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x - y"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ベクトルのスカラー倍を計算する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Float64,1}:\n",
       " 3.2\n",
       " 6.4\n",
       " 9.6"
      ]
     },
     "execution_count": 179,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "3.2x"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 行ベクトルを作る"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1×3 RowVector{Float64,Array{Float64,1}}:\n",
       " 1.0  2.0  3.0"
      ]
     },
     "execution_count": 180,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Float64,1}:\n",
       " 1.0\n",
       " 2.0\n",
       " 3.0"
      ]
     },
     "execution_count": 181,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x''  # 2回でもとに戻る"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 内積を計算する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "14.0"
      ]
     },
     "execution_count": 182,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dot(x, x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 183,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "14.0"
      ]
     },
     "execution_count": 183,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x ⋅ x  # 上と同じ (\\cdot)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "14.0"
      ]
     },
     "execution_count": 184,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x'x"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 直積を計算する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 185,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3×3 Array{Float64,2}:\n",
       " 1.0  2.0  3.0\n",
       " 2.0  4.0  6.0\n",
       " 3.0  6.0  9.0"
      ]
     },
     "execution_count": 185,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x * x'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 対角行列を作る"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 186,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3×3 Array{Float64,2}:\n",
       " 1.0  0.0  0.0\n",
       " 0.0  2.0  0.0\n",
       " 0.0  0.0  3.0"
      ]
     },
     "execution_count": 186,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diagm([1.0, 2.0, 3.0])  # 通常の行列の型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 187,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3×3 Diagonal{Float64}:\n",
       " 1.0   ⋅    ⋅ \n",
       "  ⋅   2.0   ⋅ \n",
       "  ⋅    ⋅   3.0"
      ]
     },
     "execution_count": 187,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Diagonal([1.0, 2.0, 3.0])  # 対角行列の型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 行列積を計算する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 188,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3×3 Array{Float64,2}:\n",
       "  0.726385    1.6588   1.13122 \n",
       "  1.01566     1.77963  0.710212\n",
       " -0.0650975  -1.22412  1.03047 "
      ]
     },
     "execution_count": 188,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = randn(3, 3)\n",
    "B = randn(3, 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 189,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3×3 Array{Float64,2}:\n",
       " -1.28874  -3.78644  -1.10194 \n",
       " -1.70857  -4.33366  -0.816591\n",
       "  1.54023   2.93319   1.31487 "
      ]
     },
     "execution_count": 189,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A * B  # 通常の行列積"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 190,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3×3 Array{Float64,2}:\n",
       " -2.19284  -5.01086  -2.08284 \n",
       " -1.06601  -3.18224   0.516614\n",
       "  1.47724   2.94792   1.4728  "
      ]
     },
     "execution_count": 190,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "At_mul_B(A, B)  # Aを転置して掛ける"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 191,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3×3 Array{Float64,2}:\n",
       " -2.19284  -5.01086  -2.08284 \n",
       " -1.06601  -3.18224   0.516614\n",
       "  1.47724   2.94792   1.4728  "
      ]
     },
     "execution_count": 191,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A'B  # 上と同じ"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 192,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3×3 Array{Float64,2}:\n",
       " -0.35104  -1.17308   0.938959\n",
       " -1.26934  -2.02604   2.15484 \n",
       "  2.2404    2.53849  -1.5252  "
      ]
     },
     "execution_count": 192,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A_mul_Bt(A, B)  # Bを転置して掛ける"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 193,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3×3 Array{Float64,2}:\n",
       " -0.35104  -1.17308   0.938959\n",
       " -1.26934  -2.02604   2.15484 \n",
       "  2.2404    2.53849  -1.5252  "
      ]
     },
     "execution_count": 193,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A * B'  # 上と同じ"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 194,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3×3 Array{Float64,2}:\n",
       " -2.22868   -3.02436    1.7201 \n",
       " -0.275315  -0.892186   2.39829\n",
       "  1.98846    2.34479   -1.18667"
      ]
     },
     "execution_count": 194,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "At_mul_Bt(A, B)  # AもBも転置して掛ける"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 195,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3×3 Array{Float64,2}:\n",
       " -2.22868   -3.02436    1.7201 \n",
       " -0.275315  -0.892186   2.39829\n",
       "  1.98846    2.34479   -1.18667"
      ]
     },
     "execution_count": 195,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A'B'  # 上と同じ"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 固有値・固有ベクトルを計算する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 196,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2×2 Array{Float64,2}:\n",
       "  5.0  2.0\n",
       " -2.0  3.0"
      ]
     },
     "execution_count": 196,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X = [5.0 2.0; -2.0 3.0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 197,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2-element Array{Complex{Float64},1}:\n",
       " 4.0+1.73205im\n",
       " 4.0-1.73205im"
      ]
     },
     "execution_count": 197,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eigvals(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 198,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2×2 Array{Complex{Float64},2}:\n",
       "  0.707107+0.0im        0.707107-0.0im     \n",
       " -0.353553+0.612372im  -0.353553-0.612372im"
      ]
     },
     "execution_count": 198,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eigvecs(X)  # 複素数の固有ベクトル"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 199,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2-element Array{Float64,1}:\n",
       " 12.0557\n",
       " 29.9443"
      ]
     },
     "execution_count": 199,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eigvals(X'X)  # 固有値はすべて正なので正定値行列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 200,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2×2 Array{Float64,2}:\n",
       "  0.229753  -0.973249\n",
       " -0.973249  -0.229753"
      ]
     },
     "execution_count": 200,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eigvecs(X'X)  # 正定値行列に対しては実数の固有ベクトル"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 線型方程式系を解く"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 201,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Float64,1}:\n",
       "  1.0\n",
       " -2.0\n",
       "  0.0"
      ]
     },
     "execution_count": 201,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = [3.0  2.0 -1.0\n",
    "     2.0 -2.0  4.0\n",
    "    -1.0  0.5 -1.0]\n",
    "b = [1.0, -2.0, 0.0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 202,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Float64,1}:\n",
       "  1.0\n",
       " -2.0\n",
       " -2.0"
      ]
     },
     "execution_count": 202,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = A \\ b  # A x = b の解"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 203,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 203,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A * x ≈ b  # 解の確認"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 統計"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 一様分布から乱数を得る"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 204,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.3867181118018075"
      ]
     },
     "execution_count": 204,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rand()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "30-element Array{Float64,1}:\n",
       " 0.0233823 \n",
       " 0.584213  \n",
       " 0.996262  \n",
       " 0.0486294 \n",
       " 0.823912  \n",
       " 0.00980484\n",
       " 0.506794  \n",
       " 0.922409  \n",
       " 0.846705  \n",
       " 0.685258  \n",
       " 0.0148934 \n",
       " 0.101358  \n",
       " 0.578418  \n",
       " ⋮         \n",
       " 0.672831  \n",
       " 0.167329  \n",
       " 0.826931  \n",
       " 0.181764  \n",
       " 0.401678  \n",
       " 0.1965    \n",
       " 0.202258  \n",
       " 0.0961149 \n",
       " 0.245319  \n",
       " 0.919989  \n",
       " 0.549066  \n",
       " 0.184145  "
      ]
     },
     "execution_count": 205,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rand(30)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 標準正規分布から乱数を得る"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 206,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.04586384215519224"
      ]
     },
     "execution_count": 206,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "randn()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 207,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "30-element Array{Float64,1}:\n",
       " -0.437116 \n",
       "  0.385278 \n",
       " -0.473007 \n",
       " -0.371043 \n",
       " -0.0256377\n",
       "  1.2682   \n",
       "  0.552556 \n",
       " -0.0252973\n",
       " -1.13349  \n",
       "  2.46311  \n",
       " -0.902314 \n",
       "  1.19349  \n",
       "  0.271862 \n",
       "  ⋮        \n",
       " -1.3191   \n",
       "  0.194445 \n",
       "  2.25805  \n",
       "  1.87969  \n",
       " -0.176167 \n",
       " -0.0395945\n",
       "  1.24096  \n",
       " -1.03593  \n",
       " -0.259864 \n",
       "  1.2209   \n",
       "  2.11896  \n",
       " -0.695827 "
      ]
     },
     "execution_count": 207,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "randn(30)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 様々な分布から乱数を得る"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 208,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import Distributions  ## https://github.com/JuliaStats/Distributions.jl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 209,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10-element Array{Float64,1}:\n",
       " 0.851551 \n",
       " 1.8048   \n",
       " 0.0905379\n",
       " 0.0643867\n",
       " 0.464794 \n",
       " 0.792174 \n",
       " 2.73824  \n",
       " 0.332647 \n",
       " 0.565023 \n",
       " 1.14877  "
      ]
     },
     "execution_count": 209,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "g = Distributions.Gamma(1.0, 2.0)  # ガンマ分布\n",
    "rand(g, 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10-element Array{Int64,1}:\n",
       " 10\n",
       " 12\n",
       " 13\n",
       "  8\n",
       " 12\n",
       "  7\n",
       "  7\n",
       " 12\n",
       "  4\n",
       " 11"
      ]
     },
     "execution_count": 210,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p = Distributions.Poisson(10)  # ポアソン分布\n",
    "rand(p, 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### サンプリングを行う"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 211,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8"
      ]
     },
     "execution_count": 211,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rand(1:20)  # 1-20の値から1個サンプリング"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 212,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10-element Array{Int64,1}:\n",
       " 10\n",
       "  8\n",
       " 17\n",
       "  7\n",
       " 17\n",
       "  3\n",
       " 10\n",
       " 18\n",
       "  7\n",
       " 10"
      ]
     },
     "execution_count": 212,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rand(1:20, 10)  # 1~20の値から10個サンプリング"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 213,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "using StatsBase  # https://github.com/JuliaStats/StatsBase.jl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 214,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10-element Array{Int64,1}:\n",
       "  7\n",
       " 18\n",
       " 17\n",
       "  8\n",
       " 20\n",
       " 12\n",
       " 14\n",
       "  5\n",
       "  4\n",
       " 19"
      ]
     },
     "execution_count": 214,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample(1:20, 10, replace=false)  # 非復元抽出"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 平均・分散を計算する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 215,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.008539475320023372"
      ]
     },
     "execution_count": 215,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean(randn(100))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 216,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.865934027580458"
      ]
     },
     "execution_count": 216,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "var(randn(100))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 中央値を計算する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 217,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0103736890230341"
      ]
     },
     "execution_count": 217,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "median(exp.(randn(100)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 分位数を計算する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 218,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "x = exp.(randn(100));"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 219,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.39879867876339664"
      ]
     },
     "execution_count": 219,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "quantile(x, 0.1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 220,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6779346947809612"
      ]
     },
     "execution_count": 220,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "quantile(x, 0.25)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 221,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0: 0.10576604052523694\n",
      "0.1: 0.39879867876339664\n",
      "0.2: 0.5585514635406499\n",
      "0.3: 0.7252001881297099\n",
      "0.4: 0.9280416777324269\n",
      "0.5: 1.1110217625293453\n",
      "0.6: 1.4068712917385797\n",
      "0.7: 1.7752452712496667\n",
      "0.8: 2.9288228171021804\n",
      "0.9: 4.571210350690497\n",
      "1.0: 15.1433030232737\n"
     ]
    }
   ],
   "source": [
    "for q in linspace(0, 1, 11)\n",
    "    println(q, \": \", quantile(x, q))\n",
    "end"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 行列の最大値・最小値を計算する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 222,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5×3 Array{Float64,2}:\n",
       " -0.80238    0.644167  -0.0853525\n",
       "  0.823909  -0.350321  -0.969769 \n",
       "  0.463137   2.23558   -0.64375  \n",
       "  1.85394    0.886008   1.16761  \n",
       " -0.821372   0.468997  -1.69867  "
      ]
     },
     "execution_count": 222,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = randn(5, 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 223,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.235578644026364"
      ]
     },
     "execution_count": 223,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "maximum(A)  # 全要素の最大値 (最小値はminimum)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 224,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5×1 Array{Float64,2}:\n",
       " 0.644167\n",
       " 0.823909\n",
       " 2.23558 \n",
       " 1.85394 \n",
       " 0.468997"
      ]
     },
     "execution_count": 224,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "maximum(A, 2)  # 行最大"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 225,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1×3 Array{Float64,2}:\n",
       " 1.85394  2.23558  1.16761"
      ]
     },
     "execution_count": 225,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "maximum(A, 1)  # 列最大"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 行列から平均を引く"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 226,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5×3 Array{Float64,2}:\n",
       " 10.9184   10.6914    8.21326\n",
       " 10.2181   10.8977   11.8139 \n",
       "  9.11668   9.83351  10.3405 \n",
       " 11.5015    8.74474   9.91524\n",
       " 11.31     10.1985    8.82895"
      ]
     },
     "execution_count": 226,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = randn(5, 3) + 10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 227,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5×3 Array{Float64,2}:\n",
       "  0.977356   0.75038    -1.72774 \n",
       " -0.758501  -0.0788276   0.837329\n",
       " -0.646876   0.0699516   0.576924\n",
       "  1.44766   -1.30908    -0.138582\n",
       "  1.19753    0.0860069  -1.28354 "
      ]
     },
     "execution_count": 227,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A .- mean(A, 2)  # 行平均を引く"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 228,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5×3 Array{Float64,2}:\n",
       "  0.305433   0.618205  -1.6091  \n",
       " -0.394858   0.824564   1.99153 \n",
       " -1.49624   -0.23966    0.51812 \n",
       "  0.888563  -1.32843    0.092875\n",
       "  0.697097   0.125321  -0.993418"
      ]
     },
     "execution_count": 228,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A .- mean(A, 1)  # 列平均を引く"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 共分散行列を計算する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 229,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2×3 Array{Float64,2}:\n",
       " 3.0  5.8  1.1\n",
       " 1.0  4.2  0.1"
      ]
     },
     "execution_count": 229,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X = [3.0 5.8 1.1; 1.0 4.2 0.1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 230,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3×3 Array{Float64,2}:\n",
       " 2.0  1.6   1.0\n",
       " 1.6  1.28  0.8\n",
       " 1.0  0.8   0.5"
      ]
     },
     "execution_count": 230,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cov(X, 1)  # 各行がサンプル"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 231,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2×2 Array{Float64,2}:\n",
       " 5.59  4.99   \n",
       " 4.99  4.64333"
      ]
     },
     "execution_count": 231,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cov(X, 2)  # 各列がサンプル"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 232,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2×2 Array{Float64,2}:\n",
       " 1.0       0.979444\n",
       " 0.979444  1.0     "
      ]
     },
     "execution_count": 232,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cor(X, 2)  # ピアソンの相関係数の行列"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 最小二乗法を行う"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 233,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4-element Array{Float64,1}:\n",
       " -1.0\n",
       "  1.0\n",
       "  2.0\n",
       "  3.0"
      ]
     },
     "execution_count": 233,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X = randn(20, 4)\n",
    "b = [-1.0, 1.0, 2.0, 3.0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 234,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "20-element Array{Float64,1}:\n",
       "  1.8996  \n",
       "  6.01268 \n",
       "  1.41041 \n",
       " -0.542336\n",
       " -2.5572  \n",
       " -0.450025\n",
       "  3.60568 \n",
       " -3.86358 \n",
       " -0.819904\n",
       "  1.11038 \n",
       " -6.1131  \n",
       "  1.69123 \n",
       " -2.1921  \n",
       "  5.05921 \n",
       " -1.56521 \n",
       "  2.39779 \n",
       "  3.91339 \n",
       "  0.451056\n",
       " -1.10424 \n",
       "  4.80995 "
      ]
     },
     "execution_count": 234,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y = X * b + randn(20) * 0.1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "正規方程式 $(X'X)\\beta = X'y$ の解"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 235,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4-element Array{Float64,1}:\n",
       " -1.02689 \n",
       "  0.976217\n",
       "  2.01937 \n",
       "  2.98385 "
      ]
     },
     "execution_count": 235,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(X'X)\\X'*y"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "また、$X=QR$と分解すると、$X$が最大列階数のとき正規方程式は\n",
    "\n",
    "\n",
    "\\begin{align}\n",
    "(X'X)\\beta &= X'y \\\\\n",
    "(QR)'(QR)\\beta &= (QR)'y \\\\\n",
    "R'(Q'Q)R\\beta &= R'Q'y \\\\\n",
    "R\\beta &= Q'y\n",
    "\\end{align}\n",
    "\n",
    "なので次のようにも計算できる"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 236,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4-element Array{Float64,1}:\n",
       " -1.02689 \n",
       "  0.976217\n",
       "  2.01937 \n",
       "  2.98385 "
      ]
     },
     "execution_count": 236,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Q, R = qr(X)\n",
    "R\\(Q'y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 解析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 関数の根を計算する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 237,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "using Roots  # https://github.com/JuliaMath/Roots.jl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 238,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0"
      ]
     },
     "execution_count": 238,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fzero(log, 0, 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 239,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.0"
      ]
     },
     "execution_count": 239,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fzero(x -> sin(x - 3), 2, 4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### データ点を補完する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 240,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "using Interpolations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 241,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "f (generic function with 1 method)"
      ]
     },
     "execution_count": 241,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f(x) = sin(x) * exp(-x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 242,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(::#17) (generic function with 1 method)"
      ]
     },
     "execution_count": 242,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xs = linspace(-3, 3, 8)\n",
    "itp = interpolate([f(x) for x in xs], BSpline(Cubic(Line())), OnCell())\n",
    "scl = scale(itp, xs)\n",
    "g = x->scl[x]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 243,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.3095598756531122"
      ]
     },
     "execution_count": 243,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 244,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.31573248343343835"
      ]
     },
     "execution_count": 244,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "g(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 245,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\"\n",
       "     xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n",
       "     xmlns:gadfly=\"http://www.gadflyjl.org/ns\"\n",
       "     version=\"1.2\"\n",
       "     width=\"141.42mm\" height=\"100mm\" viewBox=\"0 0 141.42 100\"\n",
       "     stroke=\"none\"\n",
       "     fill=\"#000000\"\n",
       "     stroke-width=\"0.3\"\n",
       "     font-size=\"3.88\"\n",
       ">\n",
       "<g class=\"plotroot xscalable yscalable\" id=\"img-4168e8c3-1\">\n",
       "  <g font-size=\"3.88\" font-family=\"'PT Sans','Helvetica Neue','Helvetica',sans-serif\" fill=\"#564A55\" stroke=\"#000000\" stroke-opacity=\"0.000\" id=\"img-4168e8c3-2\">\n",
       "    <text x=\"72.76\" y=\"88.39\" text-anchor=\"middle\" dy=\"0.6em\">x</text>\n",
       "  </g>\n",
       "  <g class=\"guide xlabels\" font-size=\"2.82\" font-family=\"'PT Sans Caption','Helvetica Neue','Helvetica',sans-serif\" fill=\"#6C606B\" id=\"img-4168e8c3-3\">\n",
       "    <text x=\"19.94\" y=\"81.72\" text-anchor=\"middle\" dy=\"0.6em\">-3</text>\n",
       "    <text x=\"37.55\" y=\"81.72\" text-anchor=\"middle\" dy=\"0.6em\">-2</text>\n",
       "    <text x=\"55.15\" y=\"81.72\" text-anchor=\"middle\" dy=\"0.6em\">-1</text>\n",
       "    <text x=\"72.76\" y=\"81.72\" text-anchor=\"middle\" dy=\"0.6em\">0</text>\n",
       "    <text x=\"90.37\" y=\"81.72\" text-anchor=\"middle\" dy=\"0.6em\">1</text>\n",
       "    <text x=\"107.98\" y=\"81.72\" text-anchor=\"middle\" dy=\"0.6em\">2</text>\n",
       "    <text x=\"125.58\" y=\"81.72\" text-anchor=\"middle\" dy=\"0.6em\">3</text>\n",
       "  </g>\n",
       "  <g class=\"guide colorkey\" id=\"img-4168e8c3-4\">\n",
       "    <g fill=\"#4C404B\" font-size=\"2.82\" font-family=\"'PT Sans','Helvetica Neue','Helvetica',sans-serif\" id=\"img-4168e8c3-5\">\n",
       "      <text x=\"132.05\" y=\"42.86\" dy=\"0.35em\" id=\"img-4168e8c3-6\" class=\"color_f1\">f<tspan style=\"dominant-baseline:inherit\" dy=\"0.6em\" font-size=\"83%\">1</tspan><tspan dy=\"-0.498000em\"></tspan></text>\n",
       "      <text x=\"132.05\" y=\"47.8\" dy=\"0.35em\" id=\"img-4168e8c3-7\" class=\"color_f2\">f<tspan style=\"dominant-baseline:inherit\" dy=\"0.6em\" font-size=\"83%\">2</tspan><tspan dy=\"-0.498000em\"></tspan></text>\n",
       "    </g>\n",
       "    <g stroke=\"#000000\" stroke-opacity=\"0.000\" id=\"img-4168e8c3-8\">\n",
       "      <rect x=\"128.58\" y=\"41.62\" width=\"2.47\" height=\"2.47\" id=\"img-4168e8c3-9\" class=\"color_f1\" fill=\"#00BFFF\"/>\n",
       "      <rect x=\"128.58\" y=\"46.56\" width=\"2.47\" height=\"2.47\" id=\"img-4168e8c3-10\" class=\"color_f2\" fill=\"#D4CA3A\"/>\n",
       "    </g>\n",
       "    <g fill=\"#362A35\" font-size=\"3.88\" font-family=\"'PT Sans','Helvetica Neue','Helvetica',sans-serif\" stroke=\"#000000\" stroke-opacity=\"0.000\" id=\"img-4168e8c3-11\">\n",
       "      <text x=\"128.58\" y=\"37.72\" id=\"img-4168e8c3-12\">Color</text>\n",
       "    </g>\n",
       "  </g>\n",
       "<g clip-path=\"url(#img-4168e8c3-13)\">\n",
       "  <g id=\"img-4168e8c3-14\">\n",
       "    <g pointer-events=\"visible\" opacity=\"1\" fill=\"#000000\" fill-opacity=\"0.000\" stroke=\"#000000\" stroke-opacity=\"0.000\" class=\"guide background\" id=\"img-4168e8c3-15\">\n",
       "      <rect x=\"17.94\" y=\"5\" width=\"109.65\" height=\"75.72\" id=\"img-4168e8c3-16\"/>\n",
       "    </g>\n",
       "    <g class=\"guide ygridlines xfixed\" stroke-dasharray=\"0.5,0.5\" stroke-width=\"0.2\" stroke=\"#D0D0E0\" id=\"img-4168e8c3-17\">\n",
       "      <path fill=\"none\" d=\"M17.94,78.72 L 127.58 78.72\" id=\"img-4168e8c3-18\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,60.79 L 127.58 60.79\" id=\"img-4168e8c3-19\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,42.86 L 127.58 42.86\" id=\"img-4168e8c3-20\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,24.93 L 127.58 24.93\" id=\"img-4168e8c3-21\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,7 L 127.58 7\" id=\"img-4168e8c3-22\"/>\n",
       "    </g>\n",
       "    <g class=\"guide xgridlines yfixed\" stroke-dasharray=\"0.5,0.5\" stroke-width=\"0.2\" stroke=\"#D0D0E0\" id=\"img-4168e8c3-23\">\n",
       "      <path fill=\"none\" d=\"M19.94,5 L 19.94 80.72\" id=\"img-4168e8c3-24\"/>\n",
       "      <path fill=\"none\" d=\"M37.55,5 L 37.55 80.72\" id=\"img-4168e8c3-25\"/>\n",
       "      <path fill=\"none\" d=\"M55.15,5 L 55.15 80.72\" id=\"img-4168e8c3-26\"/>\n",
       "      <path fill=\"none\" d=\"M72.76,5 L 72.76 80.72\" id=\"img-4168e8c3-27\"/>\n",
       "      <path fill=\"none\" d=\"M90.37,5 L 90.37 80.72\" id=\"img-4168e8c3-28\"/>\n",
       "      <path fill=\"none\" d=\"M107.98,5 L 107.98 80.72\" id=\"img-4168e8c3-29\"/>\n",
       "      <path fill=\"none\" d=\"M125.58,5 L 125.58 80.72\" id=\"img-4168e8c3-30\"/>\n",
       "    </g>\n",
       "    <g class=\"plotpanel\" id=\"img-4168e8c3-31\">\n",
       "      <g class=\"geometry\" id=\"img-4168e8c3-32\">\n",
       "        <g class=\"color_RGBA{Float32}(0.0f0,0.74736935f0,1.0f0,1.0f0)\" stroke-width=\"0.3\" id=\"img-4168e8c3-33\">\n",
       "          <g stroke=\"#FFFFFF\" fill=\"#00BFFF\" id=\"img-4168e8c3-34\">\n",
       "            <use xlink:href=\"#img-4168e8c3-35\" x=\"125.58\" y=\"24.88\" id=\"img-4168e8c3-36\"/>\n",
       "          </g>\n",
       "          <g stroke=\"#FFFFFF\" fill=\"#00BFFF\" id=\"img-4168e8c3-37\">\n",
       "            <use xlink:href=\"#img-4168e8c3-38\" x=\"110.49\" y=\"24.22\" id=\"img-4168e8c3-39\"/>\n",
       "          </g>\n",
       "          <g stroke=\"#FFFFFF\" fill=\"#00BFFF\" id=\"img-4168e8c3-40\">\n",
       "            <use xlink:href=\"#img-4168e8c3-41\" x=\"95.4\" y=\"23.03\" id=\"img-4168e8c3-42\"/>\n",
       "          </g>\n",
       "          <g stroke=\"#FFFFFF\" fill=\"#00BFFF\" id=\"img-4168e8c3-43\">\n",
       "            <use xlink:href=\"#img-4168e8c3-44\" x=\"80.31\" y=\"22.99\" id=\"img-4168e8c3-45\"/>\n",
       "          </g>\n",
       "          <g stroke=\"#FFFFFF\" fill=\"#00BFFF\" id=\"img-4168e8c3-46\">\n",
       "            <use xlink:href=\"#img-4168e8c3-47\" x=\"65.22\" y=\"29.5\" id=\"img-4168e8c3-48\"/>\n",
       "          </g>\n",
       "          <g stroke=\"#FFFFFF\" fill=\"#00BFFF\" id=\"img-4168e8c3-49\">\n",
       "            <use xlink:href=\"#img-4168e8c3-50\" x=\"50.12\" y=\"49.82\" id=\"img-4168e8c3-51\"/>\n",
       "          </g>\n",
       "          <g stroke=\"#FFFFFF\" fill=\"#00BFFF\" id=\"img-4168e8c3-52\">\n",
       "            <use xlink:href=\"#img-4168e8c3-53\" x=\"35.03\" y=\"76.32\" id=\"img-4168e8c3-54\"/>\n",
       "          </g>\n",
       "          <g stroke=\"#FFFFFF\" fill=\"#00BFFF\" id=\"img-4168e8c3-55\">\n",
       "            <use xlink:href=\"#img-4168e8c3-56\" x=\"19.94\" y=\"45.26\" id=\"img-4168e8c3-57\"/>\n",
       "          </g>\n",
       "        </g>\n",
       "      </g>\n",
       "      <g stroke-width=\"0.3\" fill=\"#000000\" fill-opacity=\"0.000\" stroke-dasharray=\"none\" id=\"img-4168e8c3-58\">\n",
       "        <path fill=\"none\" d=\"M19.94,45.26 L 20.36 48.12 20.79 50.82 21.21 53.37 21.64 55.77 22.06 58.01 22.48 60.12 22.91 62.08 23.33 63.91 23.76 65.61 24.18 67.19 24.61 68.64 25.03 69.97 25.45 71.19 25.88 72.3 26.3 73.31 26.73 74.21 27.15 75.01 27.58 75.72 28 76.34 28.42 76.87 28.85 77.32 29.27 77.69 29.7 77.98 30.12 78.19 30.55 78.34 30.97 78.42 31.39 78.43 31.82 78.38 32.24 78.28 32.67 78.11 33.09 77.9 33.52 77.64 33.94 77.32 34.36 76.97 34.79 76.57 35.21 76.13 35.64 75.66 36.06 75.15 36.49 74.6 36.91 74.03 37.33 73.42 37.76 72.79 38.18 72.14 38.61 71.46 39.03 70.77 39.46 70.05 39.88 69.31 40.3 68.56 40.73 67.8 41.15 67.02 41.58 66.23 42 65.44 42.43 64.63 42.85 63.82 43.27 63 43.7 62.17 44.12 61.35 44.55 60.52 44.97 59.69 45.4 58.86 45.82 58.02 46.24 57.2 46.67 56.37 47.09 55.55 47.52 54.73 47.94 53.91 48.37 53.1 48.79 52.3 49.21 51.5 49.64 50.71 50.06 49.93 50.49 49.16 50.91 48.4 51.34 47.64 51.76 46.9 52.18 46.16 52.61 45.44 53.03 44.73 53.46 44.02 53.88 43.33 54.31 42.65 54.73 41.99 55.15 41.33 55.58 40.69 56 40.06 56.43 39.44 56.85 38.84 57.28 38.24 57.7 37.66 58.12 37.1 58.55 36.54 58.97 36 59.4 35.47 59.82 34.96 60.25 34.45 60.67 33.96 61.09 33.49 61.52 33.02 61.94 32.57 62.37 32.13 62.79 31.71 63.22 31.29 63.64 30.89 64.06 30.5 64.49 30.12 64.91 29.76 65.34 29.4 65.76 29.06 66.19 28.73 66.61 28.41 67.03 28.1 67.46 27.8 67.88 27.52 68.31 27.24 68.73 26.97 69.16 26.72 69.58 26.47 70 26.24 70.43 26.01 70.85 25.79 71.28 25.59 71.7 25.39 72.13 25.2 72.55 25.02 72.97 24.84 73.4 24.68 73.82 24.52 74.25 24.37 74.67 24.23 75.1 24.1 75.52 23.97 75.94 23.85 76.37 23.74 76.79 23.63 77.22 23.53 77.64 23.44 78.07 23.35 78.49 23.27 78.91 23.2 79.34 23.13 79.76 23.06 80.19 23 80.61 22.95 81.04 22.9 81.46 22.85 81.88 22.81 82.31 22.78 82.73 22.74 83.16 22.72 83.58 22.69 84.01 22.67 84.43 22.65 84.85 22.64 85.28 22.63 85.7 22.62 86.13 22.62 86.55 22.62 86.98 22.62 87.4 22.62 87.82 22.63 88.25 22.64 88.67 22.65 89.1 22.66 89.52 22.67 89.95 22.69 90.37 22.71 90.79 22.73 91.22 22.75 91.64 22.77 92.07 22.8 92.49 22.82 92.92 22.85 93.34 22.88 93.76 22.91 94.19 22.94 94.61 22.97 95.04 23 95.46 23.03 95.89 23.06 96.31 23.1 96.73 23.13 97.16 23.17 97.58 23.2 98.01 23.23 98.43 23.27 98.86 23.31 99.28 23.34 99.7 23.38 100.13 23.41 100.55 23.45 100.98 23.49 101.4 23.52 101.83 23.56 102.25 23.59 102.67 23.63 103.1 23.66 103.52 23.7 103.95 23.73 104.37 23.77 104.8 23.8 105.22 23.84 105.64 23.87 106.07 23.9 106.49 23.93 106.92 23.97 107.34 24 107.76 24.03 108.19 24.06 108.61 24.09 109.04 24.12 109.46 24.15 109.89 24.18 110.31 24.21 110.73 24.24 111.16 24.26 111.58 24.29 112.01 24.32 112.43 24.34 112.86 24.37 113.28 24.39 113.7 24.42 114.13 24.44 114.55 24.46 114.98 24.49 115.4 24.51 115.83 24.53 116.25 24.55 116.67 24.57 117.1 24.59 117.52 24.61 117.95 24.63 118.37 24.65 118.8 24.66 119.22 24.68 119.64 24.7 120.07 24.71 120.49 24.73 120.92 24.74 121.34 24.76 121.77 24.77 122.19 24.79 122.61 24.8 123.04 24.81 123.46 24.82 123.89 24.84 124.31 24.85 124.74 24.86 125.16 24.87 125.58 24.88\" id=\"img-4168e8c3-59\" stroke=\"#00BFFF\" class=\"geometry color_f1\"/>\n",
       "        <path fill=\"none\" d=\"M19.94,45.26 L 20.36 46.79 20.79 48.3 21.21 49.79 21.64 51.24 22.06 52.68 22.48 54.08 22.91 55.45 23.33 56.79 23.76 58.1 24.18 59.37 24.61 60.61 25.03 61.81 25.45 62.97 25.88 64.09 26.3 65.18 26.73 66.22 27.15 67.21 27.58 68.17 28 69.08 28.42 69.94 28.85 70.75 29.27 71.51 29.7 72.23 30.12 72.89 30.55 73.49 30.97 74.05 31.39 74.54 31.82 74.98 32.24 75.36 32.67 75.68 33.09 75.95 33.52 76.14 33.94 76.28 34.36 76.35 34.79 76.35 35.21 76.29 35.64 76.16 36.06 75.96 36.49 75.71 36.91 75.39 37.33 75.02 37.76 74.59 38.18 74.11 38.61 73.58 39.03 73.01 39.46 72.39 39.88 71.73 40.3 71.03 40.73 70.29 41.15 69.52 41.58 68.72 42 67.89 42.43 67.03 42.85 66.15 43.27 65.25 43.7 64.33 44.12 63.39 44.55 62.43 44.97 61.47 45.4 60.5 45.82 59.52 46.24 58.54 46.67 57.56 47.09 56.57 47.52 55.6 47.94 54.62 48.37 53.66 48.79 52.71 49.21 51.77 49.64 50.85 50.06 49.95 50.49 49.07 50.91 48.21 51.34 47.37 51.76 46.56 52.18 45.76 52.61 44.99 53.03 44.23 53.46 43.49 53.88 42.78 54.31 42.08 54.73 41.4 55.15 40.74 55.58 40.1 56 39.47 56.43 38.86 56.85 38.27 57.28 37.69 57.7 37.13 58.12 36.59 58.55 36.06 58.97 35.55 59.4 35.05 59.82 34.56 60.25 34.09 60.67 33.64 61.09 33.19 61.52 32.76 61.94 32.34 62.37 31.94 62.79 31.54 63.22 31.16 63.64 30.79 64.06 30.43 64.49 30.08 64.91 29.74 65.34 29.41 65.76 29.09 66.19 28.78 66.61 28.48 67.03 28.18 67.46 27.9 67.88 27.63 68.31 27.36 68.73 27.1 69.16 26.85 69.58 26.61 70 26.38 70.43 26.16 70.85 25.94 71.28 25.73 71.7 25.54 72.13 25.34 72.55 25.16 72.97 24.98 73.4 24.81 73.82 24.65 74.25 24.49 74.67 24.35 75.1 24.2 75.52 24.07 75.94 23.94 76.37 23.82 76.79 23.71 77.22 23.6 77.64 23.5 78.07 23.4 78.49 23.31 78.91 23.22 79.34 23.15 79.76 23.07 80.19 23.01 80.61 22.94 81.04 22.89 81.46 22.83 81.88 22.79 82.31 22.75 82.73 22.71 83.16 22.67 83.58 22.65 84.01 22.62 84.43 22.6 84.85 22.59 85.28 22.57 85.7 22.56 86.13 22.56 86.55 22.56 86.98 22.56 87.4 22.56 87.82 22.57 88.25 22.58 88.67 22.59 89.1 22.61 89.52 22.62 89.95 22.64 90.37 22.66 90.79 22.69 91.22 22.71 91.64 22.74 92.07 22.77 92.49 22.8 92.92 22.83 93.34 22.86 93.76 22.89 94.19 22.93 94.61 22.96 95.04 23 95.46 23.03 95.89 23.07 96.31 23.1 96.73 23.14 97.16 23.17 97.58 23.21 98.01 23.24 98.43 23.28 98.86 23.32 99.28 23.35 99.7 23.39 100.13 23.42 100.55 23.46 100.98 23.49 101.4 23.53 101.83 23.57 102.25 23.6 102.67 23.64 103.1 23.67 103.52 23.71 103.95 23.74 104.37 23.77 104.8 23.81 105.22 23.84 105.64 23.87 106.07 23.91 106.49 23.94 106.92 23.97 107.34 24 107.76 24.03 108.19 24.06 108.61 24.09 109.04 24.12 109.46 24.15 109.89 24.18 110.31 24.21 110.73 24.24 111.16 24.26 111.58 24.29 112.01 24.31 112.43 24.34 112.86 24.36 113.28 24.39 113.7 24.41 114.13 24.43 114.55 24.45 114.98 24.48 115.4 24.5 115.83 24.52 116.25 24.54 116.67 24.56 117.1 24.58 117.52 24.59 117.95 24.61 118.37 24.63 118.8 24.65 119.22 24.66 119.64 24.68 120.07 24.7 120.49 24.71 120.92 24.73 121.34 24.74 121.77 24.76 122.19 24.77 122.61 24.79 123.04 24.8 123.46 24.81 123.89 24.83 124.31 24.84 124.74 24.85 125.16 24.87 125.58 24.88\" id=\"img-4168e8c3-60\" stroke=\"#D4CA3A\" class=\"geometry color_f2\"/>\n",
       "      </g>\n",
       "    </g>\n",
       "  </g>\n",
       "</g>\n",
       "  <g class=\"guide ylabels\" font-size=\"2.82\" font-family=\"'PT Sans Caption','Helvetica Neue','Helvetica',sans-serif\" fill=\"#6C606B\" id=\"img-4168e8c3-61\">\n",
       "    <text x=\"16.94\" y=\"78.72\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-4168e8c3-62\">-7.5</text>\n",
       "    <text x=\"16.94\" y=\"60.79\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-4168e8c3-63\">-5.0</text>\n",
       "    <text x=\"16.94\" y=\"42.86\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-4168e8c3-64\">-2.5</text>\n",
       "    <text x=\"16.94\" y=\"24.93\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-4168e8c3-65\">0.0</text>\n",
       "    <text x=\"16.94\" y=\"7\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-4168e8c3-66\">2.5</text>\n",
       "  </g>\n",
       "  <g font-size=\"3.88\" font-family=\"'PT Sans','Helvetica Neue','Helvetica',sans-serif\" fill=\"#564A55\" stroke=\"#000000\" stroke-opacity=\"0.000\" id=\"img-4168e8c3-67\">\n",
       "    <text x=\"8.81\" y=\"42.86\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-4168e8c3-68\">y</text>\n",
       "  </g>\n",
       "</g>\n",
       "<defs>\n",
       "  <clipPath id=\"img-4168e8c3-13\">\n",
       "  <path d=\"M17.94,5 L 127.58 5 127.58 80.72 17.94 80.72\" />\n",
       "</clipPath>\n",
       "  <g id=\"img-4168e8c3-35\">\n",
       "    <circle cx=\"0\" cy=\"0\" r=\"0.9\" id=\"img-4168e8c3-69\"/>\n",
       "  </g>\n",
       "  <g id=\"img-4168e8c3-38\">\n",
       "    <circle cx=\"0\" cy=\"0\" r=\"0.9\" id=\"img-4168e8c3-70\"/>\n",
       "  </g>\n",
       "  <g id=\"img-4168e8c3-41\">\n",
       "    <circle cx=\"0\" cy=\"0\" r=\"0.9\" id=\"img-4168e8c3-71\"/>\n",
       "  </g>\n",
       "  <g id=\"img-4168e8c3-44\">\n",
       "    <circle cx=\"0\" cy=\"0\" r=\"0.9\" id=\"img-4168e8c3-72\"/>\n",
       "  </g>\n",
       "  <g id=\"img-4168e8c3-47\">\n",
       "    <circle cx=\"0\" cy=\"0\" r=\"0.9\" id=\"img-4168e8c3-73\"/>\n",
       "  </g>\n",
       "  <g id=\"img-4168e8c3-50\">\n",
       "    <circle cx=\"0\" cy=\"0\" r=\"0.9\" id=\"img-4168e8c3-74\"/>\n",
       "  </g>\n",
       "  <g id=\"img-4168e8c3-53\">\n",
       "    <circle cx=\"0\" cy=\"0\" r=\"0.9\" id=\"img-4168e8c3-75\"/>\n",
       "  </g>\n",
       "  <g id=\"img-4168e8c3-56\">\n",
       "    <circle cx=\"0\" cy=\"0\" r=\"0.9\" id=\"img-4168e8c3-76\"/>\n",
       "  </g>\n",
       "</defs>\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\"\n",
       "     xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n",
       "     xmlns:gadfly=\"http://www.gadflyjl.org/ns\"\n",
       "     version=\"1.2\"\n",
       "     width=\"141.42mm\" height=\"100mm\" viewBox=\"0 0 141.42 100\"\n",
       "     stroke=\"none\"\n",
       "     fill=\"#000000\"\n",
       "     stroke-width=\"0.3\"\n",
       "     font-size=\"3.88\"\n",
       "\n",
       "     id=\"img-5cbf6b2f\">\n",
       "<g class=\"plotroot xscalable yscalable\" id=\"img-5cbf6b2f-1\">\n",
       "  <g font-size=\"3.88\" font-family=\"'PT Sans','Helvetica Neue','Helvetica',sans-serif\" fill=\"#564A55\" stroke=\"#000000\" stroke-opacity=\"0.000\" id=\"img-5cbf6b2f-2\">\n",
       "    <text x=\"72.76\" y=\"88.39\" text-anchor=\"middle\" dy=\"0.6em\">x</text>\n",
       "  </g>\n",
       "  <g class=\"guide xlabels\" font-size=\"2.82\" font-family=\"'PT Sans Caption','Helvetica Neue','Helvetica',sans-serif\" fill=\"#6C606B\" id=\"img-5cbf6b2f-3\">\n",
       "    <text x=\"-103.31\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">-10</text>\n",
       "    <text x=\"-85.71\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">-9</text>\n",
       "    <text x=\"-68.1\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">-8</text>\n",
       "    <text x=\"-50.49\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">-7</text>\n",
       "    <text x=\"-32.88\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">-6</text>\n",
       "    <text x=\"-15.28\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">-5</text>\n",
       "    <text x=\"2.33\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">-4</text>\n",
       "    <text x=\"19.94\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"visible\">-3</text>\n",
       "    <text x=\"37.55\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"visible\">-2</text>\n",
       "    <text x=\"55.15\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"visible\">-1</text>\n",
       "    <text x=\"72.76\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"visible\">0</text>\n",
       "    <text x=\"90.37\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"visible\">1</text>\n",
       "    <text x=\"107.98\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"visible\">2</text>\n",
       "    <text x=\"125.58\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"visible\">3</text>\n",
       "    <text x=\"143.19\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">4</text>\n",
       "    <text x=\"160.8\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">5</text>\n",
       "    <text x=\"178.41\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">6</text>\n",
       "    <text x=\"196.02\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">7</text>\n",
       "    <text x=\"213.62\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">8</text>\n",
       "    <text x=\"231.23\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">9</text>\n",
       "    <text x=\"248.84\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">10</text>\n",
       "    <text x=\"-85.71\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-9.0</text>\n",
       "    <text x=\"-82.18\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-8.8</text>\n",
       "    <text x=\"-78.66\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-8.6</text>\n",
       "    <text x=\"-75.14\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-8.4</text>\n",
       "    <text x=\"-71.62\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-8.2</text>\n",
       "    <text x=\"-68.1\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-8.0</text>\n",
       "    <text x=\"-64.58\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-7.8</text>\n",
       "    <text x=\"-61.06\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-7.6</text>\n",
       "    <text x=\"-57.53\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-7.4</text>\n",
       "    <text x=\"-54.01\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-7.2</text>\n",
       "    <text x=\"-50.49\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-7.0</text>\n",
       "    <text x=\"-46.97\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-6.8</text>\n",
       "    <text x=\"-43.45\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-6.6</text>\n",
       "    <text x=\"-39.93\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-6.4</text>\n",
       "    <text x=\"-36.41\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-6.2</text>\n",
       "    <text x=\"-32.88\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-6.0</text>\n",
       "    <text x=\"-29.36\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-5.8</text>\n",
       "    <text x=\"-25.84\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-5.6</text>\n",
       "    <text x=\"-22.32\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-5.4</text>\n",
       "    <text x=\"-18.8\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-5.2</text>\n",
       "    <text x=\"-15.28\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-5.0</text>\n",
       "    <text x=\"-11.75\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-4.8</text>\n",
       "    <text x=\"-8.23\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-4.6</text>\n",
       "    <text x=\"-4.71\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-4.4</text>\n",
       "    <text x=\"-1.19\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-4.2</text>\n",
       "    <text x=\"2.33\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-4.0</text>\n",
       "    <text x=\"5.85\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-3.8</text>\n",
       "    <text x=\"9.37\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-3.6</text>\n",
       "    <text x=\"12.9\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-3.4</text>\n",
       "    <text x=\"16.42\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-3.2</text>\n",
       "    <text x=\"19.94\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-3.0</text>\n",
       "    <text x=\"23.46\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-2.8</text>\n",
       "    <text x=\"26.98\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-2.6</text>\n",
       "    <text x=\"30.5\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-2.4</text>\n",
       "    <text x=\"34.03\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-2.2</text>\n",
       "    <text x=\"37.55\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-2.0</text>\n",
       "    <text x=\"41.07\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-1.8</text>\n",
       "    <text x=\"44.59\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-1.6</text>\n",
       "    <text x=\"48.11\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-1.4</text>\n",
       "    <text x=\"51.63\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-1.2</text>\n",
       "    <text x=\"55.15\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-1.0</text>\n",
       "    <text x=\"58.68\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-0.8</text>\n",
       "    <text x=\"62.2\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-0.6</text>\n",
       "    <text x=\"65.72\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-0.4</text>\n",
       "    <text x=\"69.24\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-0.2</text>\n",
       "    <text x=\"72.76\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">0.0</text>\n",
       "    <text x=\"76.28\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">0.2</text>\n",
       "    <text x=\"79.8\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">0.4</text>\n",
       "    <text x=\"83.33\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">0.6</text>\n",
       "    <text x=\"86.85\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">0.8</text>\n",
       "    <text x=\"90.37\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">1.0</text>\n",
       "    <text x=\"93.89\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">1.2</text>\n",
       "    <text x=\"97.41\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">1.4</text>\n",
       "    <text x=\"100.93\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">1.6</text>\n",
       "    <text x=\"104.46\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">1.8</text>\n",
       "    <text x=\"107.98\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">2.0</text>\n",
       "    <text x=\"111.5\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">2.2</text>\n",
       "    <text x=\"115.02\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">2.4</text>\n",
       "    <text x=\"118.54\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">2.6</text>\n",
       "    <text x=\"122.06\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">2.8</text>\n",
       "    <text x=\"125.58\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">3.0</text>\n",
       "    <text x=\"129.11\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">3.2</text>\n",
       "    <text x=\"132.63\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">3.4</text>\n",
       "    <text x=\"136.15\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">3.6</text>\n",
       "    <text x=\"139.67\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">3.8</text>\n",
       "    <text x=\"143.19\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">4.0</text>\n",
       "    <text x=\"146.71\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">4.2</text>\n",
       "    <text x=\"150.24\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">4.4</text>\n",
       "    <text x=\"153.76\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">4.6</text>\n",
       "    <text x=\"157.28\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">4.8</text>\n",
       "    <text x=\"160.8\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">5.0</text>\n",
       "    <text x=\"164.32\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">5.2</text>\n",
       "    <text x=\"167.84\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">5.4</text>\n",
       "    <text x=\"171.36\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">5.6</text>\n",
       "    <text x=\"174.89\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">5.8</text>\n",
       "    <text x=\"178.41\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">6.0</text>\n",
       "    <text x=\"181.93\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">6.2</text>\n",
       "    <text x=\"185.45\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">6.4</text>\n",
       "    <text x=\"188.97\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">6.6</text>\n",
       "    <text x=\"192.49\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">6.8</text>\n",
       "    <text x=\"196.02\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">7.0</text>\n",
       "    <text x=\"199.54\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">7.2</text>\n",
       "    <text x=\"203.06\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">7.4</text>\n",
       "    <text x=\"206.58\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">7.6</text>\n",
       "    <text x=\"210.1\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">7.8</text>\n",
       "    <text x=\"213.62\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">8.0</text>\n",
       "    <text x=\"217.14\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">8.2</text>\n",
       "    <text x=\"220.67\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">8.4</text>\n",
       "    <text x=\"224.19\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">8.6</text>\n",
       "    <text x=\"227.71\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">8.8</text>\n",
       "    <text x=\"231.23\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">9.0</text>\n",
       "    <text x=\"-103.31\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"0.5\" visibility=\"hidden\">-10</text>\n",
       "    <text x=\"-15.28\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"0.5\" visibility=\"hidden\">-5</text>\n",
       "    <text x=\"72.76\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"0.5\" visibility=\"hidden\">0</text>\n",
       "    <text x=\"160.8\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"0.5\" visibility=\"hidden\">5</text>\n",
       "    <text x=\"248.84\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"0.5\" visibility=\"hidden\">10</text>\n",
       "    <text x=\"-85.71\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-9.0</text>\n",
       "    <text x=\"-76.9\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-8.5</text>\n",
       "    <text x=\"-68.1\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-8.0</text>\n",
       "    <text x=\"-59.29\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-7.5</text>\n",
       "    <text x=\"-50.49\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-7.0</text>\n",
       "    <text x=\"-41.69\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-6.5</text>\n",
       "    <text x=\"-32.88\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-6.0</text>\n",
       "    <text x=\"-24.08\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-5.5</text>\n",
       "    <text x=\"-15.28\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-5.0</text>\n",
       "    <text x=\"-6.47\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-4.5</text>\n",
       "    <text x=\"2.33\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-4.0</text>\n",
       "    <text x=\"11.14\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-3.5</text>\n",
       "    <text x=\"19.94\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-3.0</text>\n",
       "    <text x=\"28.74\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-2.5</text>\n",
       "    <text x=\"37.55\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-2.0</text>\n",
       "    <text x=\"46.35\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-1.5</text>\n",
       "    <text x=\"55.15\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-1.0</text>\n",
       "    <text x=\"63.96\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-0.5</text>\n",
       "    <text x=\"72.76\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">0.0</text>\n",
       "    <text x=\"81.57\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">0.5</text>\n",
       "    <text x=\"90.37\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">1.0</text>\n",
       "    <text x=\"99.17\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">1.5</text>\n",
       "    <text x=\"107.98\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">2.0</text>\n",
       "    <text x=\"116.78\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">2.5</text>\n",
       "    <text x=\"125.58\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">3.0</text>\n",
       "    <text x=\"134.39\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">3.5</text>\n",
       "    <text x=\"143.19\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">4.0</text>\n",
       "    <text x=\"152\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">4.5</text>\n",
       "    <text x=\"160.8\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">5.0</text>\n",
       "    <text x=\"169.6\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">5.5</text>\n",
       "    <text x=\"178.41\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">6.0</text>\n",
       "    <text x=\"187.21\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">6.5</text>\n",
       "    <text x=\"196.02\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">7.0</text>\n",
       "    <text x=\"204.82\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">7.5</text>\n",
       "    <text x=\"213.62\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">8.0</text>\n",
       "    <text x=\"222.43\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">8.5</text>\n",
       "    <text x=\"231.23\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">9.0</text>\n",
       "  </g>\n",
       "  <g class=\"guide colorkey\" id=\"img-5cbf6b2f-4\">\n",
       "    <g fill=\"#4C404B\" font-size=\"2.82\" font-family=\"'PT Sans','Helvetica Neue','Helvetica',sans-serif\" id=\"img-5cbf6b2f-5\">\n",
       "      <text x=\"132.05\" y=\"42.86\" dy=\"0.35em\" id=\"img-5cbf6b2f-6\" class=\"color_f1\">f<tspan style=\"dominant-baseline:inherit\" dy=\"0.6em\" font-size=\"83%\">1</tspan><tspan dy=\"-0.498000em\"></tspan></text>\n",
       "      <text x=\"132.05\" y=\"47.8\" dy=\"0.35em\" id=\"img-5cbf6b2f-7\" class=\"color_f2\">f<tspan style=\"dominant-baseline:inherit\" dy=\"0.6em\" font-size=\"83%\">2</tspan><tspan dy=\"-0.498000em\"></tspan></text>\n",
       "    </g>\n",
       "    <g stroke=\"#000000\" stroke-opacity=\"0.000\" id=\"img-5cbf6b2f-8\">\n",
       "      <rect x=\"128.58\" y=\"41.62\" width=\"2.47\" height=\"2.47\" id=\"img-5cbf6b2f-9\" fill=\"#00BFFF\" class=\"color_f1\"/>\n",
       "      <rect x=\"128.58\" y=\"46.56\" width=\"2.47\" height=\"2.47\" id=\"img-5cbf6b2f-10\" fill=\"#D4CA3A\" class=\"color_f2\"/>\n",
       "    </g>\n",
       "    <g fill=\"#362A35\" font-size=\"3.88\" font-family=\"'PT Sans','Helvetica Neue','Helvetica',sans-serif\" stroke=\"#000000\" stroke-opacity=\"0.000\" id=\"img-5cbf6b2f-11\">\n",
       "      <text x=\"128.58\" y=\"37.72\" id=\"img-5cbf6b2f-12\">Color</text>\n",
       "    </g>\n",
       "  </g>\n",
       "<g clip-path=\"url(#img-5cbf6b2f-13)\">\n",
       "  <g id=\"img-5cbf6b2f-14\">\n",
       "    <g pointer-events=\"visible\" opacity=\"1\" fill=\"#000000\" fill-opacity=\"0.000\" stroke=\"#000000\" stroke-opacity=\"0.000\" class=\"guide background\" id=\"img-5cbf6b2f-15\">\n",
       "      <rect x=\"17.94\" y=\"5\" width=\"109.65\" height=\"75.72\" id=\"img-5cbf6b2f-16\"/>\n",
       "    </g>\n",
       "    <g class=\"guide ygridlines xfixed\" stroke-dasharray=\"0.5,0.5\" stroke-width=\"0.2\" stroke=\"#D0D0E0\" id=\"img-5cbf6b2f-17\">\n",
       "      <path fill=\"none\" d=\"M17.94,168.36 L 127.58 168.36\" id=\"img-5cbf6b2f-18\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,150.43 L 127.58 150.43\" id=\"img-5cbf6b2f-19\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,132.5 L 127.58 132.5\" id=\"img-5cbf6b2f-20\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,114.57 L 127.58 114.57\" id=\"img-5cbf6b2f-21\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,96.64 L 127.58 96.64\" id=\"img-5cbf6b2f-22\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,78.72 L 127.58 78.72\" id=\"img-5cbf6b2f-23\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,60.79 L 127.58 60.79\" id=\"img-5cbf6b2f-24\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,42.86 L 127.58 42.86\" id=\"img-5cbf6b2f-25\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,24.93 L 127.58 24.93\" id=\"img-5cbf6b2f-26\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,7 L 127.58 7\" id=\"img-5cbf6b2f-27\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-10.93 L 127.58 -10.93\" id=\"img-5cbf6b2f-28\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-28.86 L 127.58 -28.86\" id=\"img-5cbf6b2f-29\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-46.79 L 127.58 -46.79\" id=\"img-5cbf6b2f-30\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-64.72 L 127.58 -64.72\" id=\"img-5cbf6b2f-31\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-82.64 L 127.58 -82.64\" id=\"img-5cbf6b2f-32\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,150.43 L 127.58 150.43\" id=\"img-5cbf6b2f-33\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,146.84 L 127.58 146.84\" id=\"img-5cbf6b2f-34\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,143.26 L 127.58 143.26\" id=\"img-5cbf6b2f-35\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,139.67 L 127.58 139.67\" id=\"img-5cbf6b2f-36\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,136.09 L 127.58 136.09\" id=\"img-5cbf6b2f-37\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,132.5 L 127.58 132.5\" id=\"img-5cbf6b2f-38\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,128.92 L 127.58 128.92\" id=\"img-5cbf6b2f-39\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,125.33 L 127.58 125.33\" id=\"img-5cbf6b2f-40\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,121.74 L 127.58 121.74\" id=\"img-5cbf6b2f-41\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,118.16 L 127.58 118.16\" id=\"img-5cbf6b2f-42\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,114.57 L 127.58 114.57\" id=\"img-5cbf6b2f-43\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,110.99 L 127.58 110.99\" id=\"img-5cbf6b2f-44\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,107.4 L 127.58 107.4\" id=\"img-5cbf6b2f-45\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,103.82 L 127.58 103.82\" id=\"img-5cbf6b2f-46\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,100.23 L 127.58 100.23\" id=\"img-5cbf6b2f-47\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,96.64 L 127.58 96.64\" id=\"img-5cbf6b2f-48\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,93.06 L 127.58 93.06\" id=\"img-5cbf6b2f-49\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,89.47 L 127.58 89.47\" id=\"img-5cbf6b2f-50\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,85.89 L 127.58 85.89\" id=\"img-5cbf6b2f-51\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,82.3 L 127.58 82.3\" id=\"img-5cbf6b2f-52\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,78.72 L 127.58 78.72\" id=\"img-5cbf6b2f-53\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,75.13 L 127.58 75.13\" id=\"img-5cbf6b2f-54\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,71.54 L 127.58 71.54\" id=\"img-5cbf6b2f-55\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,67.96 L 127.58 67.96\" id=\"img-5cbf6b2f-56\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,64.37 L 127.58 64.37\" id=\"img-5cbf6b2f-57\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,60.79 L 127.58 60.79\" id=\"img-5cbf6b2f-58\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,57.2 L 127.58 57.2\" id=\"img-5cbf6b2f-59\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,53.61 L 127.58 53.61\" id=\"img-5cbf6b2f-60\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,50.03 L 127.58 50.03\" id=\"img-5cbf6b2f-61\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,46.44 L 127.58 46.44\" id=\"img-5cbf6b2f-62\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,42.86 L 127.58 42.86\" id=\"img-5cbf6b2f-63\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,39.27 L 127.58 39.27\" id=\"img-5cbf6b2f-64\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,35.69 L 127.58 35.69\" id=\"img-5cbf6b2f-65\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,32.1 L 127.58 32.1\" id=\"img-5cbf6b2f-66\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,28.51 L 127.58 28.51\" id=\"img-5cbf6b2f-67\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,24.93 L 127.58 24.93\" id=\"img-5cbf6b2f-68\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,21.34 L 127.58 21.34\" id=\"img-5cbf6b2f-69\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,17.76 L 127.58 17.76\" id=\"img-5cbf6b2f-70\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,14.17 L 127.58 14.17\" id=\"img-5cbf6b2f-71\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,10.59 L 127.58 10.59\" id=\"img-5cbf6b2f-72\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,7 L 127.58 7\" id=\"img-5cbf6b2f-73\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,3.41 L 127.58 3.41\" id=\"img-5cbf6b2f-74\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-0.17 L 127.58 -0.17\" id=\"img-5cbf6b2f-75\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-3.76 L 127.58 -3.76\" id=\"img-5cbf6b2f-76\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-7.34 L 127.58 -7.34\" id=\"img-5cbf6b2f-77\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-10.93 L 127.58 -10.93\" id=\"img-5cbf6b2f-78\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-14.51 L 127.58 -14.51\" id=\"img-5cbf6b2f-79\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-18.1 L 127.58 -18.1\" id=\"img-5cbf6b2f-80\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-21.69 L 127.58 -21.69\" id=\"img-5cbf6b2f-81\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-25.27 L 127.58 -25.27\" id=\"img-5cbf6b2f-82\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-28.86 L 127.58 -28.86\" id=\"img-5cbf6b2f-83\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-32.44 L 127.58 -32.44\" id=\"img-5cbf6b2f-84\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-36.03 L 127.58 -36.03\" id=\"img-5cbf6b2f-85\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-39.61 L 127.58 -39.61\" id=\"img-5cbf6b2f-86\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-43.2 L 127.58 -43.2\" id=\"img-5cbf6b2f-87\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-46.79 L 127.58 -46.79\" id=\"img-5cbf6b2f-88\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-50.37 L 127.58 -50.37\" id=\"img-5cbf6b2f-89\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-53.96 L 127.58 -53.96\" id=\"img-5cbf6b2f-90\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-57.54 L 127.58 -57.54\" id=\"img-5cbf6b2f-91\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-61.13 L 127.58 -61.13\" id=\"img-5cbf6b2f-92\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-64.72 L 127.58 -64.72\" id=\"img-5cbf6b2f-93\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,168.36 L 127.58 168.36\" id=\"img-5cbf6b2f-94\" gadfly:scale=\"0.5\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,96.64 L 127.58 96.64\" id=\"img-5cbf6b2f-95\" gadfly:scale=\"0.5\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,24.93 L 127.58 24.93\" id=\"img-5cbf6b2f-96\" gadfly:scale=\"0.5\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-46.79 L 127.58 -46.79\" id=\"img-5cbf6b2f-97\" gadfly:scale=\"0.5\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-118.5 L 127.58 -118.5\" id=\"img-5cbf6b2f-98\" gadfly:scale=\"0.5\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,154.02 L 127.58 154.02\" id=\"img-5cbf6b2f-99\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,146.84 L 127.58 146.84\" id=\"img-5cbf6b2f-100\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,139.67 L 127.58 139.67\" id=\"img-5cbf6b2f-101\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,132.5 L 127.58 132.5\" id=\"img-5cbf6b2f-102\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,125.33 L 127.58 125.33\" id=\"img-5cbf6b2f-103\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,118.16 L 127.58 118.16\" id=\"img-5cbf6b2f-104\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,110.99 L 127.58 110.99\" id=\"img-5cbf6b2f-105\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,103.82 L 127.58 103.82\" id=\"img-5cbf6b2f-106\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,96.64 L 127.58 96.64\" id=\"img-5cbf6b2f-107\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,89.47 L 127.58 89.47\" id=\"img-5cbf6b2f-108\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,82.3 L 127.58 82.3\" id=\"img-5cbf6b2f-109\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,75.13 L 127.58 75.13\" id=\"img-5cbf6b2f-110\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,67.96 L 127.58 67.96\" id=\"img-5cbf6b2f-111\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,60.79 L 127.58 60.79\" id=\"img-5cbf6b2f-112\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,53.61 L 127.58 53.61\" id=\"img-5cbf6b2f-113\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,46.44 L 127.58 46.44\" id=\"img-5cbf6b2f-114\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,39.27 L 127.58 39.27\" id=\"img-5cbf6b2f-115\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,32.1 L 127.58 32.1\" id=\"img-5cbf6b2f-116\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,24.93 L 127.58 24.93\" id=\"img-5cbf6b2f-117\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,17.76 L 127.58 17.76\" id=\"img-5cbf6b2f-118\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,10.59 L 127.58 10.59\" id=\"img-5cbf6b2f-119\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,3.41 L 127.58 3.41\" id=\"img-5cbf6b2f-120\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-3.76 L 127.58 -3.76\" id=\"img-5cbf6b2f-121\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-10.93 L 127.58 -10.93\" id=\"img-5cbf6b2f-122\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-18.1 L 127.58 -18.1\" id=\"img-5cbf6b2f-123\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-25.27 L 127.58 -25.27\" id=\"img-5cbf6b2f-124\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-32.44 L 127.58 -32.44\" id=\"img-5cbf6b2f-125\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-39.61 L 127.58 -39.61\" id=\"img-5cbf6b2f-126\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-46.79 L 127.58 -46.79\" id=\"img-5cbf6b2f-127\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-53.96 L 127.58 -53.96\" id=\"img-5cbf6b2f-128\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-61.13 L 127.58 -61.13\" id=\"img-5cbf6b2f-129\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.94,-68.3 L 127.58 -68.3\" id=\"img-5cbf6b2f-130\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "    </g>\n",
       "    <g class=\"guide xgridlines yfixed\" stroke-dasharray=\"0.5,0.5\" stroke-width=\"0.2\" stroke=\"#D0D0E0\" id=\"img-5cbf6b2f-131\">\n",
       "      <path fill=\"none\" d=\"M-103.31,5 L -103.31 80.72\" id=\"img-5cbf6b2f-132\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-85.71,5 L -85.71 80.72\" id=\"img-5cbf6b2f-133\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-68.1,5 L -68.1 80.72\" id=\"img-5cbf6b2f-134\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-50.49,5 L -50.49 80.72\" id=\"img-5cbf6b2f-135\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-32.88,5 L -32.88 80.72\" id=\"img-5cbf6b2f-136\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-15.28,5 L -15.28 80.72\" id=\"img-5cbf6b2f-137\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M2.33,5 L 2.33 80.72\" id=\"img-5cbf6b2f-138\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.94,5 L 19.94 80.72\" id=\"img-5cbf6b2f-139\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M37.55,5 L 37.55 80.72\" id=\"img-5cbf6b2f-140\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M55.15,5 L 55.15 80.72\" id=\"img-5cbf6b2f-141\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M72.76,5 L 72.76 80.72\" id=\"img-5cbf6b2f-142\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M90.37,5 L 90.37 80.72\" id=\"img-5cbf6b2f-143\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M107.98,5 L 107.98 80.72\" id=\"img-5cbf6b2f-144\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M125.58,5 L 125.58 80.72\" id=\"img-5cbf6b2f-145\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M143.19,5 L 143.19 80.72\" id=\"img-5cbf6b2f-146\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M160.8,5 L 160.8 80.72\" id=\"img-5cbf6b2f-147\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M178.41,5 L 178.41 80.72\" id=\"img-5cbf6b2f-148\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M196.02,5 L 196.02 80.72\" id=\"img-5cbf6b2f-149\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M213.62,5 L 213.62 80.72\" id=\"img-5cbf6b2f-150\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M231.23,5 L 231.23 80.72\" id=\"img-5cbf6b2f-151\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M248.84,5 L 248.84 80.72\" id=\"img-5cbf6b2f-152\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-85.71,5 L -85.71 80.72\" id=\"img-5cbf6b2f-153\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-82.18,5 L -82.18 80.72\" id=\"img-5cbf6b2f-154\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-78.66,5 L -78.66 80.72\" id=\"img-5cbf6b2f-155\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-75.14,5 L -75.14 80.72\" id=\"img-5cbf6b2f-156\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-71.62,5 L -71.62 80.72\" id=\"img-5cbf6b2f-157\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-68.1,5 L -68.1 80.72\" id=\"img-5cbf6b2f-158\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-64.58,5 L -64.58 80.72\" id=\"img-5cbf6b2f-159\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-61.06,5 L -61.06 80.72\" id=\"img-5cbf6b2f-160\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-57.53,5 L -57.53 80.72\" id=\"img-5cbf6b2f-161\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-54.01,5 L -54.01 80.72\" id=\"img-5cbf6b2f-162\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-50.49,5 L -50.49 80.72\" id=\"img-5cbf6b2f-163\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-46.97,5 L -46.97 80.72\" id=\"img-5cbf6b2f-164\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-43.45,5 L -43.45 80.72\" id=\"img-5cbf6b2f-165\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-39.93,5 L -39.93 80.72\" id=\"img-5cbf6b2f-166\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-36.41,5 L -36.41 80.72\" id=\"img-5cbf6b2f-167\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-32.88,5 L -32.88 80.72\" id=\"img-5cbf6b2f-168\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-29.36,5 L -29.36 80.72\" id=\"img-5cbf6b2f-169\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-25.84,5 L -25.84 80.72\" id=\"img-5cbf6b2f-170\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-22.32,5 L -22.32 80.72\" id=\"img-5cbf6b2f-171\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-18.8,5 L -18.8 80.72\" id=\"img-5cbf6b2f-172\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-15.28,5 L -15.28 80.72\" id=\"img-5cbf6b2f-173\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-11.75,5 L -11.75 80.72\" id=\"img-5cbf6b2f-174\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-8.23,5 L -8.23 80.72\" id=\"img-5cbf6b2f-175\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-4.71,5 L -4.71 80.72\" id=\"img-5cbf6b2f-176\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-1.19,5 L -1.19 80.72\" id=\"img-5cbf6b2f-177\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M2.33,5 L 2.33 80.72\" id=\"img-5cbf6b2f-178\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M5.85,5 L 5.85 80.72\" id=\"img-5cbf6b2f-179\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M9.37,5 L 9.37 80.72\" id=\"img-5cbf6b2f-180\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M12.9,5 L 12.9 80.72\" id=\"img-5cbf6b2f-181\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M16.42,5 L 16.42 80.72\" id=\"img-5cbf6b2f-182\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.94,5 L 19.94 80.72\" id=\"img-5cbf6b2f-183\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M23.46,5 L 23.46 80.72\" id=\"img-5cbf6b2f-184\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M26.98,5 L 26.98 80.72\" id=\"img-5cbf6b2f-185\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M30.5,5 L 30.5 80.72\" id=\"img-5cbf6b2f-186\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M34.03,5 L 34.03 80.72\" id=\"img-5cbf6b2f-187\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M37.55,5 L 37.55 80.72\" id=\"img-5cbf6b2f-188\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M41.07,5 L 41.07 80.72\" id=\"img-5cbf6b2f-189\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M44.59,5 L 44.59 80.72\" id=\"img-5cbf6b2f-190\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M48.11,5 L 48.11 80.72\" id=\"img-5cbf6b2f-191\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M51.63,5 L 51.63 80.72\" id=\"img-5cbf6b2f-192\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M55.15,5 L 55.15 80.72\" id=\"img-5cbf6b2f-193\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M58.68,5 L 58.68 80.72\" id=\"img-5cbf6b2f-194\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M62.2,5 L 62.2 80.72\" id=\"img-5cbf6b2f-195\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M65.72,5 L 65.72 80.72\" id=\"img-5cbf6b2f-196\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M69.24,5 L 69.24 80.72\" id=\"img-5cbf6b2f-197\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M72.76,5 L 72.76 80.72\" id=\"img-5cbf6b2f-198\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M76.28,5 L 76.28 80.72\" id=\"img-5cbf6b2f-199\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M79.8,5 L 79.8 80.72\" id=\"img-5cbf6b2f-200\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M83.33,5 L 83.33 80.72\" id=\"img-5cbf6b2f-201\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M86.85,5 L 86.85 80.72\" id=\"img-5cbf6b2f-202\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M90.37,5 L 90.37 80.72\" id=\"img-5cbf6b2f-203\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M93.89,5 L 93.89 80.72\" id=\"img-5cbf6b2f-204\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M97.41,5 L 97.41 80.72\" id=\"img-5cbf6b2f-205\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M100.93,5 L 100.93 80.72\" id=\"img-5cbf6b2f-206\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M104.46,5 L 104.46 80.72\" id=\"img-5cbf6b2f-207\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M107.98,5 L 107.98 80.72\" id=\"img-5cbf6b2f-208\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M111.5,5 L 111.5 80.72\" id=\"img-5cbf6b2f-209\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M115.02,5 L 115.02 80.72\" id=\"img-5cbf6b2f-210\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M118.54,5 L 118.54 80.72\" id=\"img-5cbf6b2f-211\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M122.06,5 L 122.06 80.72\" id=\"img-5cbf6b2f-212\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M125.58,5 L 125.58 80.72\" id=\"img-5cbf6b2f-213\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M129.11,5 L 129.11 80.72\" id=\"img-5cbf6b2f-214\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M132.63,5 L 132.63 80.72\" id=\"img-5cbf6b2f-215\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M136.15,5 L 136.15 80.72\" id=\"img-5cbf6b2f-216\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M139.67,5 L 139.67 80.72\" id=\"img-5cbf6b2f-217\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M143.19,5 L 143.19 80.72\" id=\"img-5cbf6b2f-218\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M146.71,5 L 146.71 80.72\" id=\"img-5cbf6b2f-219\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M150.24,5 L 150.24 80.72\" id=\"img-5cbf6b2f-220\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M153.76,5 L 153.76 80.72\" id=\"img-5cbf6b2f-221\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M157.28,5 L 157.28 80.72\" id=\"img-5cbf6b2f-222\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M160.8,5 L 160.8 80.72\" id=\"img-5cbf6b2f-223\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M164.32,5 L 164.32 80.72\" id=\"img-5cbf6b2f-224\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M167.84,5 L 167.84 80.72\" id=\"img-5cbf6b2f-225\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M171.36,5 L 171.36 80.72\" id=\"img-5cbf6b2f-226\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M174.89,5 L 174.89 80.72\" id=\"img-5cbf6b2f-227\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M178.41,5 L 178.41 80.72\" id=\"img-5cbf6b2f-228\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M181.93,5 L 181.93 80.72\" id=\"img-5cbf6b2f-229\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M185.45,5 L 185.45 80.72\" id=\"img-5cbf6b2f-230\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M188.97,5 L 188.97 80.72\" id=\"img-5cbf6b2f-231\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M192.49,5 L 192.49 80.72\" id=\"img-5cbf6b2f-232\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M196.02,5 L 196.02 80.72\" id=\"img-5cbf6b2f-233\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M199.54,5 L 199.54 80.72\" id=\"img-5cbf6b2f-234\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M203.06,5 L 203.06 80.72\" id=\"img-5cbf6b2f-235\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M206.58,5 L 206.58 80.72\" id=\"img-5cbf6b2f-236\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M210.1,5 L 210.1 80.72\" id=\"img-5cbf6b2f-237\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M213.62,5 L 213.62 80.72\" id=\"img-5cbf6b2f-238\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M217.14,5 L 217.14 80.72\" id=\"img-5cbf6b2f-239\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M220.67,5 L 220.67 80.72\" id=\"img-5cbf6b2f-240\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M224.19,5 L 224.19 80.72\" id=\"img-5cbf6b2f-241\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M227.71,5 L 227.71 80.72\" id=\"img-5cbf6b2f-242\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M231.23,5 L 231.23 80.72\" id=\"img-5cbf6b2f-243\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-103.31,5 L -103.31 80.72\" id=\"img-5cbf6b2f-244\" gadfly:scale=\"0.5\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-15.28,5 L -15.28 80.72\" id=\"img-5cbf6b2f-245\" gadfly:scale=\"0.5\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M72.76,5 L 72.76 80.72\" id=\"img-5cbf6b2f-246\" gadfly:scale=\"0.5\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M160.8,5 L 160.8 80.72\" id=\"img-5cbf6b2f-247\" gadfly:scale=\"0.5\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M248.84,5 L 248.84 80.72\" id=\"img-5cbf6b2f-248\" gadfly:scale=\"0.5\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-85.71,5 L -85.71 80.72\" id=\"img-5cbf6b2f-249\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-76.9,5 L -76.9 80.72\" id=\"img-5cbf6b2f-250\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-68.1,5 L -68.1 80.72\" id=\"img-5cbf6b2f-251\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-59.29,5 L -59.29 80.72\" id=\"img-5cbf6b2f-252\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-50.49,5 L -50.49 80.72\" id=\"img-5cbf6b2f-253\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-41.69,5 L -41.69 80.72\" id=\"img-5cbf6b2f-254\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-32.88,5 L -32.88 80.72\" id=\"img-5cbf6b2f-255\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-24.08,5 L -24.08 80.72\" id=\"img-5cbf6b2f-256\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-15.28,5 L -15.28 80.72\" id=\"img-5cbf6b2f-257\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-6.47,5 L -6.47 80.72\" id=\"img-5cbf6b2f-258\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M2.33,5 L 2.33 80.72\" id=\"img-5cbf6b2f-259\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M11.14,5 L 11.14 80.72\" id=\"img-5cbf6b2f-260\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.94,5 L 19.94 80.72\" id=\"img-5cbf6b2f-261\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M28.74,5 L 28.74 80.72\" id=\"img-5cbf6b2f-262\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M37.55,5 L 37.55 80.72\" id=\"img-5cbf6b2f-263\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M46.35,5 L 46.35 80.72\" id=\"img-5cbf6b2f-264\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M55.15,5 L 55.15 80.72\" id=\"img-5cbf6b2f-265\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M63.96,5 L 63.96 80.72\" id=\"img-5cbf6b2f-266\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M72.76,5 L 72.76 80.72\" id=\"img-5cbf6b2f-267\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M81.57,5 L 81.57 80.72\" id=\"img-5cbf6b2f-268\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M90.37,5 L 90.37 80.72\" id=\"img-5cbf6b2f-269\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M99.17,5 L 99.17 80.72\" id=\"img-5cbf6b2f-270\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M107.98,5 L 107.98 80.72\" id=\"img-5cbf6b2f-271\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M116.78,5 L 116.78 80.72\" id=\"img-5cbf6b2f-272\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M125.58,5 L 125.58 80.72\" id=\"img-5cbf6b2f-273\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M134.39,5 L 134.39 80.72\" id=\"img-5cbf6b2f-274\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M143.19,5 L 143.19 80.72\" id=\"img-5cbf6b2f-275\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M152,5 L 152 80.72\" id=\"img-5cbf6b2f-276\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M160.8,5 L 160.8 80.72\" id=\"img-5cbf6b2f-277\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M169.6,5 L 169.6 80.72\" id=\"img-5cbf6b2f-278\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M178.41,5 L 178.41 80.72\" id=\"img-5cbf6b2f-279\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M187.21,5 L 187.21 80.72\" id=\"img-5cbf6b2f-280\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M196.02,5 L 196.02 80.72\" id=\"img-5cbf6b2f-281\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M204.82,5 L 204.82 80.72\" id=\"img-5cbf6b2f-282\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M213.62,5 L 213.62 80.72\" id=\"img-5cbf6b2f-283\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M222.43,5 L 222.43 80.72\" id=\"img-5cbf6b2f-284\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M231.23,5 L 231.23 80.72\" id=\"img-5cbf6b2f-285\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "    </g>\n",
       "    <g class=\"plotpanel\" id=\"img-5cbf6b2f-286\">\n",
       "      <g class=\"geometry\" id=\"img-5cbf6b2f-287\">\n",
       "        <g class=\"color_RGBA{Float32}(0.0f0,0.74736935f0,1.0f0,1.0f0)\" stroke-width=\"0.3\" id=\"img-5cbf6b2f-288\">\n",
       "          <g stroke=\"#FFFFFF\" fill=\"#00BFFF\" id=\"img-5cbf6b2f-289\">\n",
       "            <use xlink:href=\"#img-5cbf6b2f-290\" x=\"125.58\" y=\"24.88\" id=\"img-5cbf6b2f-291\"/>\n",
       "          </g>\n",
       "          <g stroke=\"#FFFFFF\" fill=\"#00BFFF\" id=\"img-5cbf6b2f-292\">\n",
       "            <use xlink:href=\"#img-5cbf6b2f-293\" x=\"110.49\" y=\"24.22\" id=\"img-5cbf6b2f-294\"/>\n",
       "          </g>\n",
       "          <g stroke=\"#FFFFFF\" fill=\"#00BFFF\" id=\"img-5cbf6b2f-295\">\n",
       "            <use xlink:href=\"#img-5cbf6b2f-296\" x=\"95.4\" y=\"23.03\" id=\"img-5cbf6b2f-297\"/>\n",
       "          </g>\n",
       "          <g stroke=\"#FFFFFF\" fill=\"#00BFFF\" id=\"img-5cbf6b2f-298\">\n",
       "            <use xlink:href=\"#img-5cbf6b2f-299\" x=\"80.31\" y=\"22.99\" id=\"img-5cbf6b2f-300\"/>\n",
       "          </g>\n",
       "          <g stroke=\"#FFFFFF\" fill=\"#00BFFF\" id=\"img-5cbf6b2f-301\">\n",
       "            <use xlink:href=\"#img-5cbf6b2f-302\" x=\"65.22\" y=\"29.5\" id=\"img-5cbf6b2f-303\"/>\n",
       "          </g>\n",
       "          <g stroke=\"#FFFFFF\" fill=\"#00BFFF\" id=\"img-5cbf6b2f-304\">\n",
       "            <use xlink:href=\"#img-5cbf6b2f-305\" x=\"50.12\" y=\"49.82\" id=\"img-5cbf6b2f-306\"/>\n",
       "          </g>\n",
       "          <g stroke=\"#FFFFFF\" fill=\"#00BFFF\" id=\"img-5cbf6b2f-307\">\n",
       "            <use xlink:href=\"#img-5cbf6b2f-308\" x=\"35.03\" y=\"76.32\" id=\"img-5cbf6b2f-309\"/>\n",
       "          </g>\n",
       "          <g stroke=\"#FFFFFF\" fill=\"#00BFFF\" id=\"img-5cbf6b2f-310\">\n",
       "            <use xlink:href=\"#img-5cbf6b2f-311\" x=\"19.94\" y=\"45.26\" id=\"img-5cbf6b2f-312\"/>\n",
       "          </g>\n",
       "        </g>\n",
       "      </g>\n",
       "      <g stroke-width=\"0.3\" fill=\"#000000\" fill-opacity=\"0.000\" stroke-dasharray=\"none\" id=\"img-5cbf6b2f-313\">\n",
       "        <path fill=\"none\" d=\"M19.94,45.26 L 20.36 48.12 20.79 50.82 21.21 53.37 21.64 55.77 22.06 58.01 22.48 60.12 22.91 62.08 23.33 63.91 23.76 65.61 24.18 67.19 24.61 68.64 25.03 69.97 25.45 71.19 25.88 72.3 26.3 73.31 26.73 74.21 27.15 75.01 27.58 75.72 28 76.34 28.42 76.87 28.85 77.32 29.27 77.69 29.7 77.98 30.12 78.19 30.55 78.34 30.97 78.42 31.39 78.43 31.82 78.38 32.24 78.28 32.67 78.11 33.09 77.9 33.52 77.64 33.94 77.32 34.36 76.97 34.79 76.57 35.21 76.13 35.64 75.66 36.06 75.15 36.49 74.6 36.91 74.03 37.33 73.42 37.76 72.79 38.18 72.14 38.61 71.46 39.03 70.77 39.46 70.05 39.88 69.31 40.3 68.56 40.73 67.8 41.15 67.02 41.58 66.23 42 65.44 42.43 64.63 42.85 63.82 43.27 63 43.7 62.17 44.12 61.35 44.55 60.52 44.97 59.69 45.4 58.86 45.82 58.02 46.24 57.2 46.67 56.37 47.09 55.55 47.52 54.73 47.94 53.91 48.37 53.1 48.79 52.3 49.21 51.5 49.64 50.71 50.06 49.93 50.49 49.16 50.91 48.4 51.34 47.64 51.76 46.9 52.18 46.16 52.61 45.44 53.03 44.73 53.46 44.02 53.88 43.33 54.31 42.65 54.73 41.99 55.15 41.33 55.58 40.69 56 40.06 56.43 39.44 56.85 38.84 57.28 38.24 57.7 37.66 58.12 37.1 58.55 36.54 58.97 36 59.4 35.47 59.82 34.96 60.25 34.45 60.67 33.96 61.09 33.49 61.52 33.02 61.94 32.57 62.37 32.13 62.79 31.71 63.22 31.29 63.64 30.89 64.06 30.5 64.49 30.12 64.91 29.76 65.34 29.4 65.76 29.06 66.19 28.73 66.61 28.41 67.03 28.1 67.46 27.8 67.88 27.52 68.31 27.24 68.73 26.97 69.16 26.72 69.58 26.47 70 26.24 70.43 26.01 70.85 25.79 71.28 25.59 71.7 25.39 72.13 25.2 72.55 25.02 72.97 24.84 73.4 24.68 73.82 24.52 74.25 24.37 74.67 24.23 75.1 24.1 75.52 23.97 75.94 23.85 76.37 23.74 76.79 23.63 77.22 23.53 77.64 23.44 78.07 23.35 78.49 23.27 78.91 23.2 79.34 23.13 79.76 23.06 80.19 23 80.61 22.95 81.04 22.9 81.46 22.85 81.88 22.81 82.31 22.78 82.73 22.74 83.16 22.72 83.58 22.69 84.01 22.67 84.43 22.65 84.85 22.64 85.28 22.63 85.7 22.62 86.13 22.62 86.55 22.62 86.98 22.62 87.4 22.62 87.82 22.63 88.25 22.64 88.67 22.65 89.1 22.66 89.52 22.67 89.95 22.69 90.37 22.71 90.79 22.73 91.22 22.75 91.64 22.77 92.07 22.8 92.49 22.82 92.92 22.85 93.34 22.88 93.76 22.91 94.19 22.94 94.61 22.97 95.04 23 95.46 23.03 95.89 23.06 96.31 23.1 96.73 23.13 97.16 23.17 97.58 23.2 98.01 23.23 98.43 23.27 98.86 23.31 99.28 23.34 99.7 23.38 100.13 23.41 100.55 23.45 100.98 23.49 101.4 23.52 101.83 23.56 102.25 23.59 102.67 23.63 103.1 23.66 103.52 23.7 103.95 23.73 104.37 23.77 104.8 23.8 105.22 23.84 105.64 23.87 106.07 23.9 106.49 23.93 106.92 23.97 107.34 24 107.76 24.03 108.19 24.06 108.61 24.09 109.04 24.12 109.46 24.15 109.89 24.18 110.31 24.21 110.73 24.24 111.16 24.26 111.58 24.29 112.01 24.32 112.43 24.34 112.86 24.37 113.28 24.39 113.7 24.42 114.13 24.44 114.55 24.46 114.98 24.49 115.4 24.51 115.83 24.53 116.25 24.55 116.67 24.57 117.1 24.59 117.52 24.61 117.95 24.63 118.37 24.65 118.8 24.66 119.22 24.68 119.64 24.7 120.07 24.71 120.49 24.73 120.92 24.74 121.34 24.76 121.77 24.77 122.19 24.79 122.61 24.8 123.04 24.81 123.46 24.82 123.89 24.84 124.31 24.85 124.74 24.86 125.16 24.87 125.58 24.88\" id=\"img-5cbf6b2f-314\" stroke=\"#00BFFF\" class=\"geometry color_f1\"/>\n",
       "        <path fill=\"none\" d=\"M19.94,45.26 L 20.36 46.79 20.79 48.3 21.21 49.79 21.64 51.24 22.06 52.68 22.48 54.08 22.91 55.45 23.33 56.79 23.76 58.1 24.18 59.37 24.61 60.61 25.03 61.81 25.45 62.97 25.88 64.09 26.3 65.18 26.73 66.22 27.15 67.21 27.58 68.17 28 69.08 28.42 69.94 28.85 70.75 29.27 71.51 29.7 72.23 30.12 72.89 30.55 73.49 30.97 74.05 31.39 74.54 31.82 74.98 32.24 75.36 32.67 75.68 33.09 75.95 33.52 76.14 33.94 76.28 34.36 76.35 34.79 76.35 35.21 76.29 35.64 76.16 36.06 75.96 36.49 75.71 36.91 75.39 37.33 75.02 37.76 74.59 38.18 74.11 38.61 73.58 39.03 73.01 39.46 72.39 39.88 71.73 40.3 71.03 40.73 70.29 41.15 69.52 41.58 68.72 42 67.89 42.43 67.03 42.85 66.15 43.27 65.25 43.7 64.33 44.12 63.39 44.55 62.43 44.97 61.47 45.4 60.5 45.82 59.52 46.24 58.54 46.67 57.56 47.09 56.57 47.52 55.6 47.94 54.62 48.37 53.66 48.79 52.71 49.21 51.77 49.64 50.85 50.06 49.95 50.49 49.07 50.91 48.21 51.34 47.37 51.76 46.56 52.18 45.76 52.61 44.99 53.03 44.23 53.46 43.49 53.88 42.78 54.31 42.08 54.73 41.4 55.15 40.74 55.58 40.1 56 39.47 56.43 38.86 56.85 38.27 57.28 37.69 57.7 37.13 58.12 36.59 58.55 36.06 58.97 35.55 59.4 35.05 59.82 34.56 60.25 34.09 60.67 33.64 61.09 33.19 61.52 32.76 61.94 32.34 62.37 31.94 62.79 31.54 63.22 31.16 63.64 30.79 64.06 30.43 64.49 30.08 64.91 29.74 65.34 29.41 65.76 29.09 66.19 28.78 66.61 28.48 67.03 28.18 67.46 27.9 67.88 27.63 68.31 27.36 68.73 27.1 69.16 26.85 69.58 26.61 70 26.38 70.43 26.16 70.85 25.94 71.28 25.73 71.7 25.54 72.13 25.34 72.55 25.16 72.97 24.98 73.4 24.81 73.82 24.65 74.25 24.49 74.67 24.35 75.1 24.2 75.52 24.07 75.94 23.94 76.37 23.82 76.79 23.71 77.22 23.6 77.64 23.5 78.07 23.4 78.49 23.31 78.91 23.22 79.34 23.15 79.76 23.07 80.19 23.01 80.61 22.94 81.04 22.89 81.46 22.83 81.88 22.79 82.31 22.75 82.73 22.71 83.16 22.67 83.58 22.65 84.01 22.62 84.43 22.6 84.85 22.59 85.28 22.57 85.7 22.56 86.13 22.56 86.55 22.56 86.98 22.56 87.4 22.56 87.82 22.57 88.25 22.58 88.67 22.59 89.1 22.61 89.52 22.62 89.95 22.64 90.37 22.66 90.79 22.69 91.22 22.71 91.64 22.74 92.07 22.77 92.49 22.8 92.92 22.83 93.34 22.86 93.76 22.89 94.19 22.93 94.61 22.96 95.04 23 95.46 23.03 95.89 23.07 96.31 23.1 96.73 23.14 97.16 23.17 97.58 23.21 98.01 23.24 98.43 23.28 98.86 23.32 99.28 23.35 99.7 23.39 100.13 23.42 100.55 23.46 100.98 23.49 101.4 23.53 101.83 23.57 102.25 23.6 102.67 23.64 103.1 23.67 103.52 23.71 103.95 23.74 104.37 23.77 104.8 23.81 105.22 23.84 105.64 23.87 106.07 23.91 106.49 23.94 106.92 23.97 107.34 24 107.76 24.03 108.19 24.06 108.61 24.09 109.04 24.12 109.46 24.15 109.89 24.18 110.31 24.21 110.73 24.24 111.16 24.26 111.58 24.29 112.01 24.31 112.43 24.34 112.86 24.36 113.28 24.39 113.7 24.41 114.13 24.43 114.55 24.45 114.98 24.48 115.4 24.5 115.83 24.52 116.25 24.54 116.67 24.56 117.1 24.58 117.52 24.59 117.95 24.61 118.37 24.63 118.8 24.65 119.22 24.66 119.64 24.68 120.07 24.7 120.49 24.71 120.92 24.73 121.34 24.74 121.77 24.76 122.19 24.77 122.61 24.79 123.04 24.8 123.46 24.81 123.89 24.83 124.31 24.84 124.74 24.85 125.16 24.87 125.58 24.88\" id=\"img-5cbf6b2f-315\" stroke=\"#D4CA3A\" class=\"geometry color_f2\"/>\n",
       "      </g>\n",
       "    </g>\n",
       "    <g opacity=\"0\" class=\"guide zoomslider\" stroke=\"#000000\" stroke-opacity=\"0.000\" id=\"img-5cbf6b2f-316\">\n",
       "      <g fill=\"#EAEAEA\" stroke-width=\"0.3\" stroke-opacity=\"0\" stroke=\"#6A6A6A\" id=\"img-5cbf6b2f-317\">\n",
       "        <rect x=\"120.58\" y=\"8\" width=\"4\" height=\"4\" id=\"img-5cbf6b2f-318\"/>\n",
       "        <g class=\"button_logo\" fill=\"#6A6A6A\" id=\"img-5cbf6b2f-319\">\n",
       "          <path d=\"M121.38,9.6 L 122.18 9.6 122.18 8.8 122.98 8.8 122.98 9.6 123.78 9.6 123.78 10.4 122.98 10.4 122.98 11.2 122.18 11.2 122.18 10.4 121.38 10.4 z\" id=\"img-5cbf6b2f-320\"/>\n",
       "        </g>\n",
       "      </g>\n",
       "      <g fill=\"#EAEAEA\" id=\"img-5cbf6b2f-321\">\n",
       "        <rect x=\"101.08\" y=\"8\" width=\"19\" height=\"4\" id=\"img-5cbf6b2f-322\"/>\n",
       "      </g>\n",
       "      <g class=\"zoomslider_thumb\" fill=\"#6A6A6A\" id=\"img-5cbf6b2f-323\">\n",
       "        <rect x=\"109.58\" y=\"8\" width=\"2\" height=\"4\" id=\"img-5cbf6b2f-324\"/>\n",
       "      </g>\n",
       "      <g fill=\"#EAEAEA\" stroke-width=\"0.3\" stroke-opacity=\"0\" stroke=\"#6A6A6A\" id=\"img-5cbf6b2f-325\">\n",
       "        <rect x=\"96.58\" y=\"8\" width=\"4\" height=\"4\" id=\"img-5cbf6b2f-326\"/>\n",
       "        <g class=\"button_logo\" fill=\"#6A6A6A\" id=\"img-5cbf6b2f-327\">\n",
       "          <path d=\"M97.38,9.6 L 99.78 9.6 99.78 10.4 97.38 10.4 z\" id=\"img-5cbf6b2f-328\"/>\n",
       "        </g>\n",
       "      </g>\n",
       "    </g>\n",
       "  </g>\n",
       "</g>\n",
       "  <g class=\"guide ylabels\" font-size=\"2.82\" font-family=\"'PT Sans Caption','Helvetica Neue','Helvetica',sans-serif\" fill=\"#6C606B\" id=\"img-5cbf6b2f-329\">\n",
       "    <text x=\"16.94\" y=\"168.36\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-330\" gadfly:scale=\"1.0\" visibility=\"hidden\">-20.0</text>\n",
       "    <text x=\"16.94\" y=\"150.43\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-331\" gadfly:scale=\"1.0\" visibility=\"hidden\">-17.5</text>\n",
       "    <text x=\"16.94\" y=\"132.5\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-332\" gadfly:scale=\"1.0\" visibility=\"hidden\">-15.0</text>\n",
       "    <text x=\"16.94\" y=\"114.57\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-333\" gadfly:scale=\"1.0\" visibility=\"hidden\">-12.5</text>\n",
       "    <text x=\"16.94\" y=\"96.64\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-334\" gadfly:scale=\"1.0\" visibility=\"hidden\">-10.0</text>\n",
       "    <text x=\"16.94\" y=\"78.72\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-335\" gadfly:scale=\"1.0\" visibility=\"visible\">-7.5</text>\n",
       "    <text x=\"16.94\" y=\"60.79\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-336\" gadfly:scale=\"1.0\" visibility=\"visible\">-5.0</text>\n",
       "    <text x=\"16.94\" y=\"42.86\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-337\" gadfly:scale=\"1.0\" visibility=\"visible\">-2.5</text>\n",
       "    <text x=\"16.94\" y=\"24.93\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-338\" gadfly:scale=\"1.0\" visibility=\"visible\">0.0</text>\n",
       "    <text x=\"16.94\" y=\"7\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-339\" gadfly:scale=\"1.0\" visibility=\"visible\">2.5</text>\n",
       "    <text x=\"16.94\" y=\"-10.93\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-340\" gadfly:scale=\"1.0\" visibility=\"hidden\">5.0</text>\n",
       "    <text x=\"16.94\" y=\"-28.86\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-341\" gadfly:scale=\"1.0\" visibility=\"hidden\">7.5</text>\n",
       "    <text x=\"16.94\" y=\"-46.79\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-342\" gadfly:scale=\"1.0\" visibility=\"hidden\">10.0</text>\n",
       "    <text x=\"16.94\" y=\"-64.72\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-343\" gadfly:scale=\"1.0\" visibility=\"hidden\">12.5</text>\n",
       "    <text x=\"16.94\" y=\"-82.64\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-344\" gadfly:scale=\"1.0\" visibility=\"hidden\">15.0</text>\n",
       "    <text x=\"16.94\" y=\"150.43\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-345\" gadfly:scale=\"10.0\" visibility=\"hidden\">-17.5</text>\n",
       "    <text x=\"16.94\" y=\"146.84\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-346\" gadfly:scale=\"10.0\" visibility=\"hidden\">-17.0</text>\n",
       "    <text x=\"16.94\" y=\"143.26\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-347\" gadfly:scale=\"10.0\" visibility=\"hidden\">-16.5</text>\n",
       "    <text x=\"16.94\" y=\"139.67\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-348\" gadfly:scale=\"10.0\" visibility=\"hidden\">-16.0</text>\n",
       "    <text x=\"16.94\" y=\"136.09\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-349\" gadfly:scale=\"10.0\" visibility=\"hidden\">-15.5</text>\n",
       "    <text x=\"16.94\" y=\"132.5\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-350\" gadfly:scale=\"10.0\" visibility=\"hidden\">-15.0</text>\n",
       "    <text x=\"16.94\" y=\"128.92\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-351\" gadfly:scale=\"10.0\" visibility=\"hidden\">-14.5</text>\n",
       "    <text x=\"16.94\" y=\"125.33\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-352\" gadfly:scale=\"10.0\" visibility=\"hidden\">-14.0</text>\n",
       "    <text x=\"16.94\" y=\"121.74\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-353\" gadfly:scale=\"10.0\" visibility=\"hidden\">-13.5</text>\n",
       "    <text x=\"16.94\" y=\"118.16\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-354\" gadfly:scale=\"10.0\" visibility=\"hidden\">-13.0</text>\n",
       "    <text x=\"16.94\" y=\"114.57\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-355\" gadfly:scale=\"10.0\" visibility=\"hidden\">-12.5</text>\n",
       "    <text x=\"16.94\" y=\"110.99\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-356\" gadfly:scale=\"10.0\" visibility=\"hidden\">-12.0</text>\n",
       "    <text x=\"16.94\" y=\"107.4\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-357\" gadfly:scale=\"10.0\" visibility=\"hidden\">-11.5</text>\n",
       "    <text x=\"16.94\" y=\"103.82\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-358\" gadfly:scale=\"10.0\" visibility=\"hidden\">-11.0</text>\n",
       "    <text x=\"16.94\" y=\"100.23\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-359\" gadfly:scale=\"10.0\" visibility=\"hidden\">-10.5</text>\n",
       "    <text x=\"16.94\" y=\"96.64\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-360\" gadfly:scale=\"10.0\" visibility=\"hidden\">-10.0</text>\n",
       "    <text x=\"16.94\" y=\"93.06\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-361\" gadfly:scale=\"10.0\" visibility=\"hidden\">-9.5</text>\n",
       "    <text x=\"16.94\" y=\"89.47\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-362\" gadfly:scale=\"10.0\" visibility=\"hidden\">-9.0</text>\n",
       "    <text x=\"16.94\" y=\"85.89\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-363\" gadfly:scale=\"10.0\" visibility=\"hidden\">-8.5</text>\n",
       "    <text x=\"16.94\" y=\"82.3\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-364\" gadfly:scale=\"10.0\" visibility=\"hidden\">-8.0</text>\n",
       "    <text x=\"16.94\" y=\"78.72\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-365\" gadfly:scale=\"10.0\" visibility=\"hidden\">-7.5</text>\n",
       "    <text x=\"16.94\" y=\"75.13\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-366\" gadfly:scale=\"10.0\" visibility=\"hidden\">-7.0</text>\n",
       "    <text x=\"16.94\" y=\"71.54\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-367\" gadfly:scale=\"10.0\" visibility=\"hidden\">-6.5</text>\n",
       "    <text x=\"16.94\" y=\"67.96\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-368\" gadfly:scale=\"10.0\" visibility=\"hidden\">-6.0</text>\n",
       "    <text x=\"16.94\" y=\"64.37\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-369\" gadfly:scale=\"10.0\" visibility=\"hidden\">-5.5</text>\n",
       "    <text x=\"16.94\" y=\"60.79\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-370\" gadfly:scale=\"10.0\" visibility=\"hidden\">-5.0</text>\n",
       "    <text x=\"16.94\" y=\"57.2\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-371\" gadfly:scale=\"10.0\" visibility=\"hidden\">-4.5</text>\n",
       "    <text x=\"16.94\" y=\"53.61\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-372\" gadfly:scale=\"10.0\" visibility=\"hidden\">-4.0</text>\n",
       "    <text x=\"16.94\" y=\"50.03\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-373\" gadfly:scale=\"10.0\" visibility=\"hidden\">-3.5</text>\n",
       "    <text x=\"16.94\" y=\"46.44\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-374\" gadfly:scale=\"10.0\" visibility=\"hidden\">-3.0</text>\n",
       "    <text x=\"16.94\" y=\"42.86\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-375\" gadfly:scale=\"10.0\" visibility=\"hidden\">-2.5</text>\n",
       "    <text x=\"16.94\" y=\"39.27\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-376\" gadfly:scale=\"10.0\" visibility=\"hidden\">-2.0</text>\n",
       "    <text x=\"16.94\" y=\"35.69\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-377\" gadfly:scale=\"10.0\" visibility=\"hidden\">-1.5</text>\n",
       "    <text x=\"16.94\" y=\"32.1\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-378\" gadfly:scale=\"10.0\" visibility=\"hidden\">-1.0</text>\n",
       "    <text x=\"16.94\" y=\"28.51\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-379\" gadfly:scale=\"10.0\" visibility=\"hidden\">-0.5</text>\n",
       "    <text x=\"16.94\" y=\"24.93\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-380\" gadfly:scale=\"10.0\" visibility=\"hidden\">0.0</text>\n",
       "    <text x=\"16.94\" y=\"21.34\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-381\" gadfly:scale=\"10.0\" visibility=\"hidden\">0.5</text>\n",
       "    <text x=\"16.94\" y=\"17.76\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-382\" gadfly:scale=\"10.0\" visibility=\"hidden\">1.0</text>\n",
       "    <text x=\"16.94\" y=\"14.17\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-383\" gadfly:scale=\"10.0\" visibility=\"hidden\">1.5</text>\n",
       "    <text x=\"16.94\" y=\"10.59\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-384\" gadfly:scale=\"10.0\" visibility=\"hidden\">2.0</text>\n",
       "    <text x=\"16.94\" y=\"7\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-385\" gadfly:scale=\"10.0\" visibility=\"hidden\">2.5</text>\n",
       "    <text x=\"16.94\" y=\"3.41\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-386\" gadfly:scale=\"10.0\" visibility=\"hidden\">3.0</text>\n",
       "    <text x=\"16.94\" y=\"-0.17\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-387\" gadfly:scale=\"10.0\" visibility=\"hidden\">3.5</text>\n",
       "    <text x=\"16.94\" y=\"-3.76\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-388\" gadfly:scale=\"10.0\" visibility=\"hidden\">4.0</text>\n",
       "    <text x=\"16.94\" y=\"-7.34\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-389\" gadfly:scale=\"10.0\" visibility=\"hidden\">4.5</text>\n",
       "    <text x=\"16.94\" y=\"-10.93\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-390\" gadfly:scale=\"10.0\" visibility=\"hidden\">5.0</text>\n",
       "    <text x=\"16.94\" y=\"-14.51\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-391\" gadfly:scale=\"10.0\" visibility=\"hidden\">5.5</text>\n",
       "    <text x=\"16.94\" y=\"-18.1\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-392\" gadfly:scale=\"10.0\" visibility=\"hidden\">6.0</text>\n",
       "    <text x=\"16.94\" y=\"-21.69\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-393\" gadfly:scale=\"10.0\" visibility=\"hidden\">6.5</text>\n",
       "    <text x=\"16.94\" y=\"-25.27\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-394\" gadfly:scale=\"10.0\" visibility=\"hidden\">7.0</text>\n",
       "    <text x=\"16.94\" y=\"-28.86\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-395\" gadfly:scale=\"10.0\" visibility=\"hidden\">7.5</text>\n",
       "    <text x=\"16.94\" y=\"-32.44\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-396\" gadfly:scale=\"10.0\" visibility=\"hidden\">8.0</text>\n",
       "    <text x=\"16.94\" y=\"-36.03\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-397\" gadfly:scale=\"10.0\" visibility=\"hidden\">8.5</text>\n",
       "    <text x=\"16.94\" y=\"-39.61\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-398\" gadfly:scale=\"10.0\" visibility=\"hidden\">9.0</text>\n",
       "    <text x=\"16.94\" y=\"-43.2\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-399\" gadfly:scale=\"10.0\" visibility=\"hidden\">9.5</text>\n",
       "    <text x=\"16.94\" y=\"-46.79\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-400\" gadfly:scale=\"10.0\" visibility=\"hidden\">10.0</text>\n",
       "    <text x=\"16.94\" y=\"-50.37\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-401\" gadfly:scale=\"10.0\" visibility=\"hidden\">10.5</text>\n",
       "    <text x=\"16.94\" y=\"-53.96\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-402\" gadfly:scale=\"10.0\" visibility=\"hidden\">11.0</text>\n",
       "    <text x=\"16.94\" y=\"-57.54\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-403\" gadfly:scale=\"10.0\" visibility=\"hidden\">11.5</text>\n",
       "    <text x=\"16.94\" y=\"-61.13\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-404\" gadfly:scale=\"10.0\" visibility=\"hidden\">12.0</text>\n",
       "    <text x=\"16.94\" y=\"-64.72\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-405\" gadfly:scale=\"10.0\" visibility=\"hidden\">12.5</text>\n",
       "    <text x=\"16.94\" y=\"168.36\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-406\" gadfly:scale=\"0.5\" visibility=\"hidden\">-20</text>\n",
       "    <text x=\"16.94\" y=\"96.64\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-407\" gadfly:scale=\"0.5\" visibility=\"hidden\">-10</text>\n",
       "    <text x=\"16.94\" y=\"24.93\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-408\" gadfly:scale=\"0.5\" visibility=\"hidden\">0</text>\n",
       "    <text x=\"16.94\" y=\"-46.79\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-409\" gadfly:scale=\"0.5\" visibility=\"hidden\">10</text>\n",
       "    <text x=\"16.94\" y=\"-118.5\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-410\" gadfly:scale=\"0.5\" visibility=\"hidden\">20</text>\n",
       "    <text x=\"16.94\" y=\"154.02\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-411\" gadfly:scale=\"5.0\" visibility=\"hidden\">-18</text>\n",
       "    <text x=\"16.94\" y=\"146.84\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-412\" gadfly:scale=\"5.0\" visibility=\"hidden\">-17</text>\n",
       "    <text x=\"16.94\" y=\"139.67\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-413\" gadfly:scale=\"5.0\" visibility=\"hidden\">-16</text>\n",
       "    <text x=\"16.94\" y=\"132.5\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-414\" gadfly:scale=\"5.0\" visibility=\"hidden\">-15</text>\n",
       "    <text x=\"16.94\" y=\"125.33\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-415\" gadfly:scale=\"5.0\" visibility=\"hidden\">-14</text>\n",
       "    <text x=\"16.94\" y=\"118.16\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-416\" gadfly:scale=\"5.0\" visibility=\"hidden\">-13</text>\n",
       "    <text x=\"16.94\" y=\"110.99\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-417\" gadfly:scale=\"5.0\" visibility=\"hidden\">-12</text>\n",
       "    <text x=\"16.94\" y=\"103.82\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-418\" gadfly:scale=\"5.0\" visibility=\"hidden\">-11</text>\n",
       "    <text x=\"16.94\" y=\"96.64\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-419\" gadfly:scale=\"5.0\" visibility=\"hidden\">-10</text>\n",
       "    <text x=\"16.94\" y=\"89.47\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-420\" gadfly:scale=\"5.0\" visibility=\"hidden\">-9</text>\n",
       "    <text x=\"16.94\" y=\"82.3\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-421\" gadfly:scale=\"5.0\" visibility=\"hidden\">-8</text>\n",
       "    <text x=\"16.94\" y=\"75.13\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-422\" gadfly:scale=\"5.0\" visibility=\"hidden\">-7</text>\n",
       "    <text x=\"16.94\" y=\"67.96\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-423\" gadfly:scale=\"5.0\" visibility=\"hidden\">-6</text>\n",
       "    <text x=\"16.94\" y=\"60.79\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-424\" gadfly:scale=\"5.0\" visibility=\"hidden\">-5</text>\n",
       "    <text x=\"16.94\" y=\"53.61\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-425\" gadfly:scale=\"5.0\" visibility=\"hidden\">-4</text>\n",
       "    <text x=\"16.94\" y=\"46.44\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-426\" gadfly:scale=\"5.0\" visibility=\"hidden\">-3</text>\n",
       "    <text x=\"16.94\" y=\"39.27\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-427\" gadfly:scale=\"5.0\" visibility=\"hidden\">-2</text>\n",
       "    <text x=\"16.94\" y=\"32.1\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-428\" gadfly:scale=\"5.0\" visibility=\"hidden\">-1</text>\n",
       "    <text x=\"16.94\" y=\"24.93\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-429\" gadfly:scale=\"5.0\" visibility=\"hidden\">0</text>\n",
       "    <text x=\"16.94\" y=\"17.76\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-430\" gadfly:scale=\"5.0\" visibility=\"hidden\">1</text>\n",
       "    <text x=\"16.94\" y=\"10.59\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-431\" gadfly:scale=\"5.0\" visibility=\"hidden\">2</text>\n",
       "    <text x=\"16.94\" y=\"3.41\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-432\" gadfly:scale=\"5.0\" visibility=\"hidden\">3</text>\n",
       "    <text x=\"16.94\" y=\"-3.76\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-433\" gadfly:scale=\"5.0\" visibility=\"hidden\">4</text>\n",
       "    <text x=\"16.94\" y=\"-10.93\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-434\" gadfly:scale=\"5.0\" visibility=\"hidden\">5</text>\n",
       "    <text x=\"16.94\" y=\"-18.1\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-435\" gadfly:scale=\"5.0\" visibility=\"hidden\">6</text>\n",
       "    <text x=\"16.94\" y=\"-25.27\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-436\" gadfly:scale=\"5.0\" visibility=\"hidden\">7</text>\n",
       "    <text x=\"16.94\" y=\"-32.44\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-437\" gadfly:scale=\"5.0\" visibility=\"hidden\">8</text>\n",
       "    <text x=\"16.94\" y=\"-39.61\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-438\" gadfly:scale=\"5.0\" visibility=\"hidden\">9</text>\n",
       "    <text x=\"16.94\" y=\"-46.79\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-439\" gadfly:scale=\"5.0\" visibility=\"hidden\">10</text>\n",
       "    <text x=\"16.94\" y=\"-53.96\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-440\" gadfly:scale=\"5.0\" visibility=\"hidden\">11</text>\n",
       "    <text x=\"16.94\" y=\"-61.13\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-441\" gadfly:scale=\"5.0\" visibility=\"hidden\">12</text>\n",
       "    <text x=\"16.94\" y=\"-68.3\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-442\" gadfly:scale=\"5.0\" visibility=\"hidden\">13</text>\n",
       "  </g>\n",
       "  <g font-size=\"3.88\" font-family=\"'PT Sans','Helvetica Neue','Helvetica',sans-serif\" fill=\"#564A55\" stroke=\"#000000\" stroke-opacity=\"0.000\" id=\"img-5cbf6b2f-443\">\n",
       "    <text x=\"8.81\" y=\"42.86\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-5cbf6b2f-444\">y</text>\n",
       "  </g>\n",
       "</g>\n",
       "<defs>\n",
       "  <clipPath id=\"img-5cbf6b2f-13\">\n",
       "  <path d=\"M17.94,5 L 127.58 5 127.58 80.72 17.94 80.72\" />\n",
       "</clipPath>\n",
       "  <g id=\"img-5cbf6b2f-290\">\n",
       "    <circle cx=\"0\" cy=\"0\" r=\"0.9\" id=\"img-5cbf6b2f-445\"/>\n",
       "  </g>\n",
       "  <g id=\"img-5cbf6b2f-293\">\n",
       "    <circle cx=\"0\" cy=\"0\" r=\"0.9\" id=\"img-5cbf6b2f-446\"/>\n",
       "  </g>\n",
       "  <g id=\"img-5cbf6b2f-296\">\n",
       "    <circle cx=\"0\" cy=\"0\" r=\"0.9\" id=\"img-5cbf6b2f-447\"/>\n",
       "  </g>\n",
       "  <g id=\"img-5cbf6b2f-299\">\n",
       "    <circle cx=\"0\" cy=\"0\" r=\"0.9\" id=\"img-5cbf6b2f-448\"/>\n",
       "  </g>\n",
       "  <g id=\"img-5cbf6b2f-302\">\n",
       "    <circle cx=\"0\" cy=\"0\" r=\"0.9\" id=\"img-5cbf6b2f-449\"/>\n",
       "  </g>\n",
       "  <g id=\"img-5cbf6b2f-305\">\n",
       "    <circle cx=\"0\" cy=\"0\" r=\"0.9\" id=\"img-5cbf6b2f-450\"/>\n",
       "  </g>\n",
       "  <g id=\"img-5cbf6b2f-308\">\n",
       "    <circle cx=\"0\" cy=\"0\" r=\"0.9\" id=\"img-5cbf6b2f-451\"/>\n",
       "  </g>\n",
       "  <g id=\"img-5cbf6b2f-311\">\n",
       "    <circle cx=\"0\" cy=\"0\" r=\"0.9\" id=\"img-5cbf6b2f-452\"/>\n",
       "  </g>\n",
       "</defs>\n",
       "<script> <![CDATA[\n",
       "(function(N){var k=/[\\.\\/]/,L=/\\s*,\\s*/,C=function(a,d){return a-d},a,v,y={n:{}},M=function(){for(var a=0,d=this.length;a<d;a++)if(\"undefined\"!=typeof this[a])return this[a]},A=function(){for(var a=this.length;--a;)if(\"undefined\"!=typeof this[a])return this[a]},w=function(k,d){k=String(k);var f=v,n=Array.prototype.slice.call(arguments,2),u=w.listeners(k),p=0,b,q=[],e={},l=[],r=a;l.firstDefined=M;l.lastDefined=A;a=k;for(var s=v=0,x=u.length;s<x;s++)\"zIndex\"in u[s]&&(q.push(u[s].zIndex),0>u[s].zIndex&&\n",
       "(e[u[s].zIndex]=u[s]));for(q.sort(C);0>q[p];)if(b=e[q[p++] ],l.push(b.apply(d,n)),v)return v=f,l;for(s=0;s<x;s++)if(b=u[s],\"zIndex\"in b)if(b.zIndex==q[p]){l.push(b.apply(d,n));if(v)break;do if(p++,(b=e[q[p] ])&&l.push(b.apply(d,n)),v)break;while(b)}else e[b.zIndex]=b;else if(l.push(b.apply(d,n)),v)break;v=f;a=r;return l};w._events=y;w.listeners=function(a){a=a.split(k);var d=y,f,n,u,p,b,q,e,l=[d],r=[];u=0;for(p=a.length;u<p;u++){e=[];b=0;for(q=l.length;b<q;b++)for(d=l[b].n,f=[d[a[u] ],d[\"*\"] ],n=2;n--;)if(d=\n",
       "f[n])e.push(d),r=r.concat(d.f||[]);l=e}return r};w.on=function(a,d){a=String(a);if(\"function\"!=typeof d)return function(){};for(var f=a.split(L),n=0,u=f.length;n<u;n++)(function(a){a=a.split(k);for(var b=y,f,e=0,l=a.length;e<l;e++)b=b.n,b=b.hasOwnProperty(a[e])&&b[a[e] ]||(b[a[e] ]={n:{}});b.f=b.f||[];e=0;for(l=b.f.length;e<l;e++)if(b.f[e]==d){f=!0;break}!f&&b.f.push(d)})(f[n]);return function(a){+a==+a&&(d.zIndex=+a)}};w.f=function(a){var d=[].slice.call(arguments,1);return function(){w.apply(null,\n",
       "[a,null].concat(d).concat([].slice.call(arguments,0)))}};w.stop=function(){v=1};w.nt=function(k){return k?(new RegExp(\"(?:\\\\.|\\\\/|^)\"+k+\"(?:\\\\.|\\\\/|$)\")).test(a):a};w.nts=function(){return a.split(k)};w.off=w.unbind=function(a,d){if(a){var f=a.split(L);if(1<f.length)for(var n=0,u=f.length;n<u;n++)w.off(f[n],d);else{for(var f=a.split(k),p,b,q,e,l=[y],n=0,u=f.length;n<u;n++)for(e=0;e<l.length;e+=q.length-2){q=[e,1];p=l[e].n;if(\"*\"!=f[n])p[f[n] ]&&q.push(p[f[n] ]);else for(b in p)p.hasOwnProperty(b)&&\n",
       "q.push(p[b]);l.splice.apply(l,q)}n=0;for(u=l.length;n<u;n++)for(p=l[n];p.n;){if(d){if(p.f){e=0;for(f=p.f.length;e<f;e++)if(p.f[e]==d){p.f.splice(e,1);break}!p.f.length&&delete p.f}for(b in p.n)if(p.n.hasOwnProperty(b)&&p.n[b].f){q=p.n[b].f;e=0;for(f=q.length;e<f;e++)if(q[e]==d){q.splice(e,1);break}!q.length&&delete p.n[b].f}}else for(b in delete p.f,p.n)p.n.hasOwnProperty(b)&&p.n[b].f&&delete p.n[b].f;p=p.n}}}else w._events=y={n:{}}};w.once=function(a,d){var f=function(){w.unbind(a,f);return d.apply(this,\n",
       "arguments)};return w.on(a,f)};w.version=\"0.4.2\";w.toString=function(){return\"You are running Eve 0.4.2\"};\"undefined\"!=typeof module&&module.exports?module.exports=w:\"function\"===typeof define&&define.amd?define(\"eve\",[],function(){return w}):N.eve=w})(this);\n",
       "(function(N,k){\"function\"===typeof define&&define.amd?define(\"Snap.svg\",[\"eve\"],function(L){return k(N,L)}):k(N,N.eve)})(this,function(N,k){var L=function(a){var k={},y=N.requestAnimationFrame||N.webkitRequestAnimationFrame||N.mozRequestAnimationFrame||N.oRequestAnimationFrame||N.msRequestAnimationFrame||function(a){setTimeout(a,16)},M=Array.isArray||function(a){return a instanceof Array||\"[object Array]\"==Object.prototype.toString.call(a)},A=0,w=\"M\"+(+new Date).toString(36),z=function(a){if(null==\n",
       "a)return this.s;var b=this.s-a;this.b+=this.dur*b;this.B+=this.dur*b;this.s=a},d=function(a){if(null==a)return this.spd;this.spd=a},f=function(a){if(null==a)return this.dur;this.s=this.s*a/this.dur;this.dur=a},n=function(){delete k[this.id];this.update();a(\"mina.stop.\"+this.id,this)},u=function(){this.pdif||(delete k[this.id],this.update(),this.pdif=this.get()-this.b)},p=function(){this.pdif&&(this.b=this.get()-this.pdif,delete this.pdif,k[this.id]=this)},b=function(){var a;if(M(this.start)){a=[];\n",
       "for(var b=0,e=this.start.length;b<e;b++)a[b]=+this.start[b]+(this.end[b]-this.start[b])*this.easing(this.s)}else a=+this.start+(this.end-this.start)*this.easing(this.s);this.set(a)},q=function(){var l=0,b;for(b in k)if(k.hasOwnProperty(b)){var e=k[b],f=e.get();l++;e.s=(f-e.b)/(e.dur/e.spd);1<=e.s&&(delete k[b],e.s=1,l--,function(b){setTimeout(function(){a(\"mina.finish.\"+b.id,b)})}(e));e.update()}l&&y(q)},e=function(a,r,s,x,G,h,J){a={id:w+(A++).toString(36),start:a,end:r,b:s,s:0,dur:x-s,spd:1,get:G,\n",
       "set:h,easing:J||e.linear,status:z,speed:d,duration:f,stop:n,pause:u,resume:p,update:b};k[a.id]=a;r=0;for(var K in k)if(k.hasOwnProperty(K)&&(r++,2==r))break;1==r&&y(q);return a};e.time=Date.now||function(){return+new Date};e.getById=function(a){return k[a]||null};e.linear=function(a){return a};e.easeout=function(a){return Math.pow(a,1.7)};e.easein=function(a){return Math.pow(a,0.48)};e.easeinout=function(a){if(1==a)return 1;if(0==a)return 0;var b=0.48-a/1.04,e=Math.sqrt(0.1734+b*b);a=e-b;a=Math.pow(Math.abs(a),\n",
       "1/3)*(0>a?-1:1);b=-e-b;b=Math.pow(Math.abs(b),1/3)*(0>b?-1:1);a=a+b+0.5;return 3*(1-a)*a*a+a*a*a};e.backin=function(a){return 1==a?1:a*a*(2.70158*a-1.70158)};e.backout=function(a){if(0==a)return 0;a-=1;return a*a*(2.70158*a+1.70158)+1};e.elastic=function(a){return a==!!a?a:Math.pow(2,-10*a)*Math.sin(2*(a-0.075)*Math.PI/0.3)+1};e.bounce=function(a){a<1/2.75?a*=7.5625*a:a<2/2.75?(a-=1.5/2.75,a=7.5625*a*a+0.75):a<2.5/2.75?(a-=2.25/2.75,a=7.5625*a*a+0.9375):(a-=2.625/2.75,a=7.5625*a*a+0.984375);return a};\n",
       "return N.mina=e}(\"undefined\"==typeof k?function(){}:k),C=function(){function a(c,t){if(c){if(c.tagName)return x(c);if(y(c,\"array\")&&a.set)return a.set.apply(a,c);if(c instanceof e)return c;if(null==t)return c=G.doc.querySelector(c),x(c)}return new s(null==c?\"100%\":c,null==t?\"100%\":t)}function v(c,a){if(a){\"#text\"==c&&(c=G.doc.createTextNode(a.text||\"\"));\"string\"==typeof c&&(c=v(c));if(\"string\"==typeof a)return\"xlink:\"==a.substring(0,6)?c.getAttributeNS(m,a.substring(6)):\"xml:\"==a.substring(0,4)?c.getAttributeNS(la,\n",
       "a.substring(4)):c.getAttribute(a);for(var da in a)if(a[h](da)){var b=J(a[da]);b?\"xlink:\"==da.substring(0,6)?c.setAttributeNS(m,da.substring(6),b):\"xml:\"==da.substring(0,4)?c.setAttributeNS(la,da.substring(4),b):c.setAttribute(da,b):c.removeAttribute(da)}}else c=G.doc.createElementNS(la,c);return c}function y(c,a){a=J.prototype.toLowerCase.call(a);return\"finite\"==a?isFinite(c):\"array\"==a&&(c instanceof Array||Array.isArray&&Array.isArray(c))?!0:\"null\"==a&&null===c||a==typeof c&&null!==c||\"object\"==\n",
       "a&&c===Object(c)||$.call(c).slice(8,-1).toLowerCase()==a}function M(c){if(\"function\"==typeof c||Object(c)!==c)return c;var a=new c.constructor,b;for(b in c)c[h](b)&&(a[b]=M(c[b]));return a}function A(c,a,b){function m(){var e=Array.prototype.slice.call(arguments,0),f=e.join(\"\\u2400\"),d=m.cache=m.cache||{},l=m.count=m.count||[];if(d[h](f)){a:for(var e=l,l=f,B=0,H=e.length;B<H;B++)if(e[B]===l){e.push(e.splice(B,1)[0]);break a}return b?b(d[f]):d[f]}1E3<=l.length&&delete d[l.shift()];l.push(f);d[f]=c.apply(a,\n",
       "e);return b?b(d[f]):d[f]}return m}function w(c,a,b,m,e,f){return null==e?(c-=b,a-=m,c||a?(180*I.atan2(-a,-c)/C+540)%360:0):w(c,a,e,f)-w(b,m,e,f)}function z(c){return c%360*C/180}function d(c){var a=[];c=c.replace(/(?:^|\\s)(\\w+)\\(([^)]+)\\)/g,function(c,b,m){m=m.split(/\\s*,\\s*|\\s+/);\"rotate\"==b&&1==m.length&&m.push(0,0);\"scale\"==b&&(2<m.length?m=m.slice(0,2):2==m.length&&m.push(0,0),1==m.length&&m.push(m[0],0,0));\"skewX\"==b?a.push([\"m\",1,0,I.tan(z(m[0])),1,0,0]):\"skewY\"==b?a.push([\"m\",1,I.tan(z(m[0])),\n",
       "0,1,0,0]):a.push([b.charAt(0)].concat(m));return c});return a}function f(c,t){var b=O(c),m=new a.Matrix;if(b)for(var e=0,f=b.length;e<f;e++){var h=b[e],d=h.length,B=J(h[0]).toLowerCase(),H=h[0]!=B,l=H?m.invert():0,E;\"t\"==B&&2==d?m.translate(h[1],0):\"t\"==B&&3==d?H?(d=l.x(0,0),B=l.y(0,0),H=l.x(h[1],h[2]),l=l.y(h[1],h[2]),m.translate(H-d,l-B)):m.translate(h[1],h[2]):\"r\"==B?2==d?(E=E||t,m.rotate(h[1],E.x+E.width/2,E.y+E.height/2)):4==d&&(H?(H=l.x(h[2],h[3]),l=l.y(h[2],h[3]),m.rotate(h[1],H,l)):m.rotate(h[1],\n",
       "h[2],h[3])):\"s\"==B?2==d||3==d?(E=E||t,m.scale(h[1],h[d-1],E.x+E.width/2,E.y+E.height/2)):4==d?H?(H=l.x(h[2],h[3]),l=l.y(h[2],h[3]),m.scale(h[1],h[1],H,l)):m.scale(h[1],h[1],h[2],h[3]):5==d&&(H?(H=l.x(h[3],h[4]),l=l.y(h[3],h[4]),m.scale(h[1],h[2],H,l)):m.scale(h[1],h[2],h[3],h[4])):\"m\"==B&&7==d&&m.add(h[1],h[2],h[3],h[4],h[5],h[6])}return m}function n(c,t){if(null==t){var m=!0;t=\"linearGradient\"==c.type||\"radialGradient\"==c.type?c.node.getAttribute(\"gradientTransform\"):\"pattern\"==c.type?c.node.getAttribute(\"patternTransform\"):\n",
       "c.node.getAttribute(\"transform\");if(!t)return new a.Matrix;t=d(t)}else t=a._.rgTransform.test(t)?J(t).replace(/\\.{3}|\\u2026/g,c._.transform||aa):d(t),y(t,\"array\")&&(t=a.path?a.path.toString.call(t):J(t)),c._.transform=t;var b=f(t,c.getBBox(1));if(m)return b;c.matrix=b}function u(c){c=c.node.ownerSVGElement&&x(c.node.ownerSVGElement)||c.node.parentNode&&x(c.node.parentNode)||a.select(\"svg\")||a(0,0);var t=c.select(\"defs\"),t=null==t?!1:t.node;t||(t=r(\"defs\",c.node).node);return t}function p(c){return c.node.ownerSVGElement&&\n",
       "x(c.node.ownerSVGElement)||a.select(\"svg\")}function b(c,a,m){function b(c){if(null==c)return aa;if(c==+c)return c;v(B,{width:c});try{return B.getBBox().width}catch(a){return 0}}function h(c){if(null==c)return aa;if(c==+c)return c;v(B,{height:c});try{return B.getBBox().height}catch(a){return 0}}function e(b,B){null==a?d[b]=B(c.attr(b)||0):b==a&&(d=B(null==m?c.attr(b)||0:m))}var f=p(c).node,d={},B=f.querySelector(\".svg---mgr\");B||(B=v(\"rect\"),v(B,{x:-9E9,y:-9E9,width:10,height:10,\"class\":\"svg---mgr\",\n",
       "fill:\"none\"}),f.appendChild(B));switch(c.type){case \"rect\":e(\"rx\",b),e(\"ry\",h);case \"image\":e(\"width\",b),e(\"height\",h);case \"text\":e(\"x\",b);e(\"y\",h);break;case \"circle\":e(\"cx\",b);e(\"cy\",h);e(\"r\",b);break;case \"ellipse\":e(\"cx\",b);e(\"cy\",h);e(\"rx\",b);e(\"ry\",h);break;case \"line\":e(\"x1\",b);e(\"x2\",b);e(\"y1\",h);e(\"y2\",h);break;case \"marker\":e(\"refX\",b);e(\"markerWidth\",b);e(\"refY\",h);e(\"markerHeight\",h);break;case \"radialGradient\":e(\"fx\",b);e(\"fy\",h);break;case \"tspan\":e(\"dx\",b);e(\"dy\",h);break;default:e(a,\n",
       "b)}f.removeChild(B);return d}function q(c){y(c,\"array\")||(c=Array.prototype.slice.call(arguments,0));for(var a=0,b=0,m=this.node;this[a];)delete this[a++];for(a=0;a<c.length;a++)\"set\"==c[a].type?c[a].forEach(function(c){m.appendChild(c.node)}):m.appendChild(c[a].node);for(var h=m.childNodes,a=0;a<h.length;a++)this[b++]=x(h[a]);return this}function e(c){if(c.snap in E)return E[c.snap];var a=this.id=V(),b;try{b=c.ownerSVGElement}catch(m){}this.node=c;b&&(this.paper=new s(b));this.type=c.tagName;this.anims=\n",
       "{};this._={transform:[]};c.snap=a;E[a]=this;\"g\"==this.type&&(this.add=q);if(this.type in{g:1,mask:1,pattern:1})for(var e in s.prototype)s.prototype[h](e)&&(this[e]=s.prototype[e])}function l(c){this.node=c}function r(c,a){var b=v(c);a.appendChild(b);return x(b)}function s(c,a){var b,m,f,d=s.prototype;if(c&&\"svg\"==c.tagName){if(c.snap in E)return E[c.snap];var l=c.ownerDocument;b=new e(c);m=c.getElementsByTagName(\"desc\")[0];f=c.getElementsByTagName(\"defs\")[0];m||(m=v(\"desc\"),m.appendChild(l.createTextNode(\"Created with Snap\")),\n",
       "b.node.appendChild(m));f||(f=v(\"defs\"),b.node.appendChild(f));b.defs=f;for(var ca in d)d[h](ca)&&(b[ca]=d[ca]);b.paper=b.root=b}else b=r(\"svg\",G.doc.body),v(b.node,{height:a,version:1.1,width:c,xmlns:la});return b}function x(c){return!c||c instanceof e||c instanceof l?c:c.tagName&&\"svg\"==c.tagName.toLowerCase()?new s(c):c.tagName&&\"object\"==c.tagName.toLowerCase()&&\"image/svg+xml\"==c.type?new s(c.contentDocument.getElementsByTagName(\"svg\")[0]):new e(c)}a.version=\"0.3.0\";a.toString=function(){return\"Snap v\"+\n",
       "this.version};a._={};var G={win:N,doc:N.document};a._.glob=G;var h=\"hasOwnProperty\",J=String,K=parseFloat,U=parseInt,I=Math,P=I.max,Q=I.min,Y=I.abs,C=I.PI,aa=\"\",$=Object.prototype.toString,F=/^\\s*((#[a-f\\d]{6})|(#[a-f\\d]{3})|rgba?\\(\\s*([\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?(?:\\s*,\\s*[\\d\\.]+%?)?)\\s*\\)|hsba?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?%?)\\s*\\)|hsla?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?%?)\\s*\\))\\s*$/i;a._.separator=\n",
       "RegExp(\"[,\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]+\");var S=RegExp(\"[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*\"),X={hs:1,rg:1},W=RegExp(\"([a-z])[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029,]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,?[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*)+)\",\n",
       "\"ig\"),ma=RegExp(\"([rstm])[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029,]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,?[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*)+)\",\"ig\"),Z=RegExp(\"(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,?[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*\",\n",
       "\"ig\"),na=0,ba=\"S\"+(+new Date).toString(36),V=function(){return ba+(na++).toString(36)},m=\"http://www.w3.org/1999/xlink\",la=\"http://www.w3.org/2000/svg\",E={},ca=a.url=function(c){return\"url('#\"+c+\"')\"};a._.$=v;a._.id=V;a.format=function(){var c=/\\{([^\\}]+)\\}/g,a=/(?:(?:^|\\.)(.+?)(?=\\[|\\.|$|\\()|\\[('|\")(.+?)\\2\\])(\\(\\))?/g,b=function(c,b,m){var h=m;b.replace(a,function(c,a,b,m,t){a=a||m;h&&(a in h&&(h=h[a]),\"function\"==typeof h&&t&&(h=h()))});return h=(null==h||h==m?c:h)+\"\"};return function(a,m){return J(a).replace(c,\n",
       "function(c,a){return b(c,a,m)})}}();a._.clone=M;a._.cacher=A;a.rad=z;a.deg=function(c){return 180*c/C%360};a.angle=w;a.is=y;a.snapTo=function(c,a,b){b=y(b,\"finite\")?b:10;if(y(c,\"array\"))for(var m=c.length;m--;){if(Y(c[m]-a)<=b)return c[m]}else{c=+c;m=a%c;if(m<b)return a-m;if(m>c-b)return a-m+c}return a};a.getRGB=A(function(c){if(!c||(c=J(c)).indexOf(\"-\")+1)return{r:-1,g:-1,b:-1,hex:\"none\",error:1,toString:ka};if(\"none\"==c)return{r:-1,g:-1,b:-1,hex:\"none\",toString:ka};!X[h](c.toLowerCase().substring(0,\n",
       "2))&&\"#\"!=c.charAt()&&(c=T(c));if(!c)return{r:-1,g:-1,b:-1,hex:\"none\",error:1,toString:ka};var b,m,e,f,d;if(c=c.match(F)){c[2]&&(e=U(c[2].substring(5),16),m=U(c[2].substring(3,5),16),b=U(c[2].substring(1,3),16));c[3]&&(e=U((d=c[3].charAt(3))+d,16),m=U((d=c[3].charAt(2))+d,16),b=U((d=c[3].charAt(1))+d,16));c[4]&&(d=c[4].split(S),b=K(d[0]),\"%\"==d[0].slice(-1)&&(b*=2.55),m=K(d[1]),\"%\"==d[1].slice(-1)&&(m*=2.55),e=K(d[2]),\"%\"==d[2].slice(-1)&&(e*=2.55),\"rgba\"==c[1].toLowerCase().slice(0,4)&&(f=K(d[3])),\n",
       "d[3]&&\"%\"==d[3].slice(-1)&&(f/=100));if(c[5])return d=c[5].split(S),b=K(d[0]),\"%\"==d[0].slice(-1)&&(b/=100),m=K(d[1]),\"%\"==d[1].slice(-1)&&(m/=100),e=K(d[2]),\"%\"==d[2].slice(-1)&&(e/=100),\"deg\"!=d[0].slice(-3)&&\"\\u00b0\"!=d[0].slice(-1)||(b/=360),\"hsba\"==c[1].toLowerCase().slice(0,4)&&(f=K(d[3])),d[3]&&\"%\"==d[3].slice(-1)&&(f/=100),a.hsb2rgb(b,m,e,f);if(c[6])return d=c[6].split(S),b=K(d[0]),\"%\"==d[0].slice(-1)&&(b/=100),m=K(d[1]),\"%\"==d[1].slice(-1)&&(m/=100),e=K(d[2]),\"%\"==d[2].slice(-1)&&(e/=100),\n",
       "\"deg\"!=d[0].slice(-3)&&\"\\u00b0\"!=d[0].slice(-1)||(b/=360),\"hsla\"==c[1].toLowerCase().slice(0,4)&&(f=K(d[3])),d[3]&&\"%\"==d[3].slice(-1)&&(f/=100),a.hsl2rgb(b,m,e,f);b=Q(I.round(b),255);m=Q(I.round(m),255);e=Q(I.round(e),255);f=Q(P(f,0),1);c={r:b,g:m,b:e,toString:ka};c.hex=\"#\"+(16777216|e|m<<8|b<<16).toString(16).slice(1);c.opacity=y(f,\"finite\")?f:1;return c}return{r:-1,g:-1,b:-1,hex:\"none\",error:1,toString:ka}},a);a.hsb=A(function(c,b,m){return a.hsb2rgb(c,b,m).hex});a.hsl=A(function(c,b,m){return a.hsl2rgb(c,\n",
       "b,m).hex});a.rgb=A(function(c,a,b,m){if(y(m,\"finite\")){var e=I.round;return\"rgba(\"+[e(c),e(a),e(b),+m.toFixed(2)]+\")\"}return\"#\"+(16777216|b|a<<8|c<<16).toString(16).slice(1)});var T=function(c){var a=G.doc.getElementsByTagName(\"head\")[0]||G.doc.getElementsByTagName(\"svg\")[0];T=A(function(c){if(\"red\"==c.toLowerCase())return\"rgb(255, 0, 0)\";a.style.color=\"rgb(255, 0, 0)\";a.style.color=c;c=G.doc.defaultView.getComputedStyle(a,aa).getPropertyValue(\"color\");return\"rgb(255, 0, 0)\"==c?null:c});return T(c)},\n",
       "qa=function(){return\"hsb(\"+[this.h,this.s,this.b]+\")\"},ra=function(){return\"hsl(\"+[this.h,this.s,this.l]+\")\"},ka=function(){return 1==this.opacity||null==this.opacity?this.hex:\"rgba(\"+[this.r,this.g,this.b,this.opacity]+\")\"},D=function(c,b,m){null==b&&y(c,\"object\")&&\"r\"in c&&\"g\"in c&&\"b\"in c&&(m=c.b,b=c.g,c=c.r);null==b&&y(c,string)&&(m=a.getRGB(c),c=m.r,b=m.g,m=m.b);if(1<c||1<b||1<m)c/=255,b/=255,m/=255;return[c,b,m]},oa=function(c,b,m,e){c=I.round(255*c);b=I.round(255*b);m=I.round(255*m);c={r:c,\n",
       "g:b,b:m,opacity:y(e,\"finite\")?e:1,hex:a.rgb(c,b,m),toString:ka};y(e,\"finite\")&&(c.opacity=e);return c};a.color=function(c){var b;y(c,\"object\")&&\"h\"in c&&\"s\"in c&&\"b\"in c?(b=a.hsb2rgb(c),c.r=b.r,c.g=b.g,c.b=b.b,c.opacity=1,c.hex=b.hex):y(c,\"object\")&&\"h\"in c&&\"s\"in c&&\"l\"in c?(b=a.hsl2rgb(c),c.r=b.r,c.g=b.g,c.b=b.b,c.opacity=1,c.hex=b.hex):(y(c,\"string\")&&(c=a.getRGB(c)),y(c,\"object\")&&\"r\"in c&&\"g\"in c&&\"b\"in c&&!(\"error\"in c)?(b=a.rgb2hsl(c),c.h=b.h,c.s=b.s,c.l=b.l,b=a.rgb2hsb(c),c.v=b.b):(c={hex:\"none\"},\n",
       "c.r=c.g=c.b=c.h=c.s=c.v=c.l=-1,c.error=1));c.toString=ka;return c};a.hsb2rgb=function(c,a,b,m){y(c,\"object\")&&\"h\"in c&&\"s\"in c&&\"b\"in c&&(b=c.b,a=c.s,c=c.h,m=c.o);var e,h,d;c=360*c%360/60;d=b*a;a=d*(1-Y(c%2-1));b=e=h=b-d;c=~~c;b+=[d,a,0,0,a,d][c];e+=[a,d,d,a,0,0][c];h+=[0,0,a,d,d,a][c];return oa(b,e,h,m)};a.hsl2rgb=function(c,a,b,m){y(c,\"object\")&&\"h\"in c&&\"s\"in c&&\"l\"in c&&(b=c.l,a=c.s,c=c.h);if(1<c||1<a||1<b)c/=360,a/=100,b/=100;var e,h,d;c=360*c%360/60;d=2*a*(0.5>b?b:1-b);a=d*(1-Y(c%2-1));b=e=\n",
       "h=b-d/2;c=~~c;b+=[d,a,0,0,a,d][c];e+=[a,d,d,a,0,0][c];h+=[0,0,a,d,d,a][c];return oa(b,e,h,m)};a.rgb2hsb=function(c,a,b){b=D(c,a,b);c=b[0];a=b[1];b=b[2];var m,e;m=P(c,a,b);e=m-Q(c,a,b);c=((0==e?0:m==c?(a-b)/e:m==a?(b-c)/e+2:(c-a)/e+4)+360)%6*60/360;return{h:c,s:0==e?0:e/m,b:m,toString:qa}};a.rgb2hsl=function(c,a,b){b=D(c,a,b);c=b[0];a=b[1];b=b[2];var m,e,h;m=P(c,a,b);e=Q(c,a,b);h=m-e;c=((0==h?0:m==c?(a-b)/h:m==a?(b-c)/h+2:(c-a)/h+4)+360)%6*60/360;m=(m+e)/2;return{h:c,s:0==h?0:0.5>m?h/(2*m):h/(2-2*\n",
       "m),l:m,toString:ra}};a.parsePathString=function(c){if(!c)return null;var b=a.path(c);if(b.arr)return a.path.clone(b.arr);var m={a:7,c:6,o:2,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,u:3,z:0},e=[];y(c,\"array\")&&y(c[0],\"array\")&&(e=a.path.clone(c));e.length||J(c).replace(W,function(c,a,b){var h=[];c=a.toLowerCase();b.replace(Z,function(c,a){a&&h.push(+a)});\"m\"==c&&2<h.length&&(e.push([a].concat(h.splice(0,2))),c=\"l\",a=\"m\"==a?\"l\":\"L\");\"o\"==c&&1==h.length&&e.push([a,h[0] ]);if(\"r\"==c)e.push([a].concat(h));else for(;h.length>=\n",
       "m[c]&&(e.push([a].concat(h.splice(0,m[c]))),m[c]););});e.toString=a.path.toString;b.arr=a.path.clone(e);return e};var O=a.parseTransformString=function(c){if(!c)return null;var b=[];y(c,\"array\")&&y(c[0],\"array\")&&(b=a.path.clone(c));b.length||J(c).replace(ma,function(c,a,m){var e=[];a.toLowerCase();m.replace(Z,function(c,a){a&&e.push(+a)});b.push([a].concat(e))});b.toString=a.path.toString;return b};a._.svgTransform2string=d;a._.rgTransform=RegExp(\"^[a-z][\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*-?\\\\.?\\\\d\",\n",
       "\"i\");a._.transform2matrix=f;a._unit2px=b;a._.getSomeDefs=u;a._.getSomeSVG=p;a.select=function(c){return x(G.doc.querySelector(c))};a.selectAll=function(c){c=G.doc.querySelectorAll(c);for(var b=(a.set||Array)(),m=0;m<c.length;m++)b.push(x(c[m]));return b};setInterval(function(){for(var c in E)if(E[h](c)){var a=E[c],b=a.node;(\"svg\"!=a.type&&!b.ownerSVGElement||\"svg\"==a.type&&(!b.parentNode||\"ownerSVGElement\"in b.parentNode&&!b.ownerSVGElement))&&delete E[c]}},1E4);(function(c){function m(c){function a(c,\n",
       "b){var m=v(c.node,b);(m=(m=m&&m.match(d))&&m[2])&&\"#\"==m.charAt()&&(m=m.substring(1))&&(f[m]=(f[m]||[]).concat(function(a){var m={};m[b]=ca(a);v(c.node,m)}))}function b(c){var a=v(c.node,\"xlink:href\");a&&\"#\"==a.charAt()&&(a=a.substring(1))&&(f[a]=(f[a]||[]).concat(function(a){c.attr(\"xlink:href\",\"#\"+a)}))}var e=c.selectAll(\"*\"),h,d=/^\\s*url\\((\"|'|)(.*)\\1\\)\\s*$/;c=[];for(var f={},l=0,E=e.length;l<E;l++){h=e[l];a(h,\"fill\");a(h,\"stroke\");a(h,\"filter\");a(h,\"mask\");a(h,\"clip-path\");b(h);var t=v(h.node,\n",
       "\"id\");t&&(v(h.node,{id:h.id}),c.push({old:t,id:h.id}))}l=0;for(E=c.length;l<E;l++)if(e=f[c[l].old])for(h=0,t=e.length;h<t;h++)e[h](c[l].id)}function e(c,a,b){return function(m){m=m.slice(c,a);1==m.length&&(m=m[0]);return b?b(m):m}}function d(c){return function(){var a=c?\"<\"+this.type:\"\",b=this.node.attributes,m=this.node.childNodes;if(c)for(var e=0,h=b.length;e<h;e++)a+=\" \"+b[e].name+'=\"'+b[e].value.replace(/\"/g,'\\\\\"')+'\"';if(m.length){c&&(a+=\">\");e=0;for(h=m.length;e<h;e++)3==m[e].nodeType?a+=m[e].nodeValue:\n",
       "1==m[e].nodeType&&(a+=x(m[e]).toString());c&&(a+=\"</\"+this.type+\">\")}else c&&(a+=\"/>\");return a}}c.attr=function(c,a){if(!c)return this;if(y(c,\"string\"))if(1<arguments.length){var b={};b[c]=a;c=b}else return k(\"snap.util.getattr.\"+c,this).firstDefined();for(var m in c)c[h](m)&&k(\"snap.util.attr.\"+m,this,c[m]);return this};c.getBBox=function(c){if(!a.Matrix||!a.path)return this.node.getBBox();var b=this,m=new a.Matrix;if(b.removed)return a._.box();for(;\"use\"==b.type;)if(c||(m=m.add(b.transform().localMatrix.translate(b.attr(\"x\")||\n",
       "0,b.attr(\"y\")||0))),b.original)b=b.original;else var e=b.attr(\"xlink:href\"),b=b.original=b.node.ownerDocument.getElementById(e.substring(e.indexOf(\"#\")+1));var e=b._,h=a.path.get[b.type]||a.path.get.deflt;try{if(c)return e.bboxwt=h?a.path.getBBox(b.realPath=h(b)):a._.box(b.node.getBBox()),a._.box(e.bboxwt);b.realPath=h(b);b.matrix=b.transform().localMatrix;e.bbox=a.path.getBBox(a.path.map(b.realPath,m.add(b.matrix)));return a._.box(e.bbox)}catch(d){return a._.box()}};var f=function(){return this.string};\n",
       "c.transform=function(c){var b=this._;if(null==c){var m=this;c=new a.Matrix(this.node.getCTM());for(var e=n(this),h=[e],d=new a.Matrix,l=e.toTransformString(),b=J(e)==J(this.matrix)?J(b.transform):l;\"svg\"!=m.type&&(m=m.parent());)h.push(n(m));for(m=h.length;m--;)d.add(h[m]);return{string:b,globalMatrix:c,totalMatrix:d,localMatrix:e,diffMatrix:c.clone().add(e.invert()),global:c.toTransformString(),total:d.toTransformString(),local:l,toString:f}}c instanceof a.Matrix?this.matrix=c:n(this,c);this.node&&\n",
       "(\"linearGradient\"==this.type||\"radialGradient\"==this.type?v(this.node,{gradientTransform:this.matrix}):\"pattern\"==this.type?v(this.node,{patternTransform:this.matrix}):v(this.node,{transform:this.matrix}));return this};c.parent=function(){return x(this.node.parentNode)};c.append=c.add=function(c){if(c){if(\"set\"==c.type){var a=this;c.forEach(function(c){a.add(c)});return this}c=x(c);this.node.appendChild(c.node);c.paper=this.paper}return this};c.appendTo=function(c){c&&(c=x(c),c.append(this));return this};\n",
       "c.prepend=function(c){if(c){if(\"set\"==c.type){var a=this,b;c.forEach(function(c){b?b.after(c):a.prepend(c);b=c});return this}c=x(c);var m=c.parent();this.node.insertBefore(c.node,this.node.firstChild);this.add&&this.add();c.paper=this.paper;this.parent()&&this.parent().add();m&&m.add()}return this};c.prependTo=function(c){c=x(c);c.prepend(this);return this};c.before=function(c){if(\"set\"==c.type){var a=this;c.forEach(function(c){var b=c.parent();a.node.parentNode.insertBefore(c.node,a.node);b&&b.add()});\n",
       "this.parent().add();return this}c=x(c);var b=c.parent();this.node.parentNode.insertBefore(c.node,this.node);this.parent()&&this.parent().add();b&&b.add();c.paper=this.paper;return this};c.after=function(c){c=x(c);var a=c.parent();this.node.nextSibling?this.node.parentNode.insertBefore(c.node,this.node.nextSibling):this.node.parentNode.appendChild(c.node);this.parent()&&this.parent().add();a&&a.add();c.paper=this.paper;return this};c.insertBefore=function(c){c=x(c);var a=this.parent();c.node.parentNode.insertBefore(this.node,\n",
       "c.node);this.paper=c.paper;a&&a.add();c.parent()&&c.parent().add();return this};c.insertAfter=function(c){c=x(c);var a=this.parent();c.node.parentNode.insertBefore(this.node,c.node.nextSibling);this.paper=c.paper;a&&a.add();c.parent()&&c.parent().add();return this};c.remove=function(){var c=this.parent();this.node.parentNode&&this.node.parentNode.removeChild(this.node);delete this.paper;this.removed=!0;c&&c.add();return this};c.select=function(c){return x(this.node.querySelector(c))};c.selectAll=\n",
       "function(c){c=this.node.querySelectorAll(c);for(var b=(a.set||Array)(),m=0;m<c.length;m++)b.push(x(c[m]));return b};c.asPX=function(c,a){null==a&&(a=this.attr(c));return+b(this,c,a)};c.use=function(){var c,a=this.node.id;a||(a=this.id,v(this.node,{id:a}));c=\"linearGradient\"==this.type||\"radialGradient\"==this.type||\"pattern\"==this.type?r(this.type,this.node.parentNode):r(\"use\",this.node.parentNode);v(c.node,{\"xlink:href\":\"#\"+a});c.original=this;return c};var l=/\\S+/g;c.addClass=function(c){var a=(c||\n",
       "\"\").match(l)||[];c=this.node;var b=c.className.baseVal,m=b.match(l)||[],e,h,d;if(a.length){for(e=0;d=a[e++];)h=m.indexOf(d),~h||m.push(d);a=m.join(\" \");b!=a&&(c.className.baseVal=a)}return this};c.removeClass=function(c){var a=(c||\"\").match(l)||[];c=this.node;var b=c.className.baseVal,m=b.match(l)||[],e,h;if(m.length){for(e=0;h=a[e++];)h=m.indexOf(h),~h&&m.splice(h,1);a=m.join(\" \");b!=a&&(c.className.baseVal=a)}return this};c.hasClass=function(c){return!!~(this.node.className.baseVal.match(l)||[]).indexOf(c)};\n",
       "c.toggleClass=function(c,a){if(null!=a)return a?this.addClass(c):this.removeClass(c);var b=(c||\"\").match(l)||[],m=this.node,e=m.className.baseVal,h=e.match(l)||[],d,f,E;for(d=0;E=b[d++];)f=h.indexOf(E),~f?h.splice(f,1):h.push(E);b=h.join(\" \");e!=b&&(m.className.baseVal=b);return this};c.clone=function(){var c=x(this.node.cloneNode(!0));v(c.node,\"id\")&&v(c.node,{id:c.id});m(c);c.insertAfter(this);return c};c.toDefs=function(){u(this).appendChild(this.node);return this};c.pattern=c.toPattern=function(c,\n",
       "a,b,m){var e=r(\"pattern\",u(this));null==c&&(c=this.getBBox());y(c,\"object\")&&\"x\"in c&&(a=c.y,b=c.width,m=c.height,c=c.x);v(e.node,{x:c,y:a,width:b,height:m,patternUnits:\"userSpaceOnUse\",id:e.id,viewBox:[c,a,b,m].join(\" \")});e.node.appendChild(this.node);return e};c.marker=function(c,a,b,m,e,h){var d=r(\"marker\",u(this));null==c&&(c=this.getBBox());y(c,\"object\")&&\"x\"in c&&(a=c.y,b=c.width,m=c.height,e=c.refX||c.cx,h=c.refY||c.cy,c=c.x);v(d.node,{viewBox:[c,a,b,m].join(\" \"),markerWidth:b,markerHeight:m,\n",
       "orient:\"auto\",refX:e||0,refY:h||0,id:d.id});d.node.appendChild(this.node);return d};var E=function(c,a,b,m){\"function\"!=typeof b||b.length||(m=b,b=L.linear);this.attr=c;this.dur=a;b&&(this.easing=b);m&&(this.callback=m)};a._.Animation=E;a.animation=function(c,a,b,m){return new E(c,a,b,m)};c.inAnim=function(){var c=[],a;for(a in this.anims)this.anims[h](a)&&function(a){c.push({anim:new E(a._attrs,a.dur,a.easing,a._callback),mina:a,curStatus:a.status(),status:function(c){return a.status(c)},stop:function(){a.stop()}})}(this.anims[a]);\n",
       "return c};a.animate=function(c,a,b,m,e,h){\"function\"!=typeof e||e.length||(h=e,e=L.linear);var d=L.time();c=L(c,a,d,d+m,L.time,b,e);h&&k.once(\"mina.finish.\"+c.id,h);return c};c.stop=function(){for(var c=this.inAnim(),a=0,b=c.length;a<b;a++)c[a].stop();return this};c.animate=function(c,a,b,m){\"function\"!=typeof b||b.length||(m=b,b=L.linear);c instanceof E&&(m=c.callback,b=c.easing,a=b.dur,c=c.attr);var d=[],f=[],l={},t,ca,n,T=this,q;for(q in c)if(c[h](q)){T.equal?(n=T.equal(q,J(c[q])),t=n.from,ca=\n",
       "n.to,n=n.f):(t=+T.attr(q),ca=+c[q]);var la=y(t,\"array\")?t.length:1;l[q]=e(d.length,d.length+la,n);d=d.concat(t);f=f.concat(ca)}t=L.time();var p=L(d,f,t,t+a,L.time,function(c){var a={},b;for(b in l)l[h](b)&&(a[b]=l[b](c));T.attr(a)},b);T.anims[p.id]=p;p._attrs=c;p._callback=m;k(\"snap.animcreated.\"+T.id,p);k.once(\"mina.finish.\"+p.id,function(){delete T.anims[p.id];m&&m.call(T)});k.once(\"mina.stop.\"+p.id,function(){delete T.anims[p.id]});return T};var T={};c.data=function(c,b){var m=T[this.id]=T[this.id]||\n",
       "{};if(0==arguments.length)return k(\"snap.data.get.\"+this.id,this,m,null),m;if(1==arguments.length){if(a.is(c,\"object\")){for(var e in c)c[h](e)&&this.data(e,c[e]);return this}k(\"snap.data.get.\"+this.id,this,m[c],c);return m[c]}m[c]=b;k(\"snap.data.set.\"+this.id,this,b,c);return this};c.removeData=function(c){null==c?T[this.id]={}:T[this.id]&&delete T[this.id][c];return this};c.outerSVG=c.toString=d(1);c.innerSVG=d()})(e.prototype);a.parse=function(c){var a=G.doc.createDocumentFragment(),b=!0,m=G.doc.createElement(\"div\");\n",
       "c=J(c);c.match(/^\\s*<\\s*svg(?:\\s|>)/)||(c=\"<svg>\"+c+\"</svg>\",b=!1);m.innerHTML=c;if(c=m.getElementsByTagName(\"svg\")[0])if(b)a=c;else for(;c.firstChild;)a.appendChild(c.firstChild);m.innerHTML=aa;return new l(a)};l.prototype.select=e.prototype.select;l.prototype.selectAll=e.prototype.selectAll;a.fragment=function(){for(var c=Array.prototype.slice.call(arguments,0),b=G.doc.createDocumentFragment(),m=0,e=c.length;m<e;m++){var h=c[m];h.node&&h.node.nodeType&&b.appendChild(h.node);h.nodeType&&b.appendChild(h);\n",
       "\"string\"==typeof h&&b.appendChild(a.parse(h).node)}return new l(b)};a._.make=r;a._.wrap=x;s.prototype.el=function(c,a){var b=r(c,this.node);a&&b.attr(a);return b};k.on(\"snap.util.getattr\",function(){var c=k.nt(),c=c.substring(c.lastIndexOf(\".\")+1),a=c.replace(/[A-Z]/g,function(c){return\"-\"+c.toLowerCase()});return pa[h](a)?this.node.ownerDocument.defaultView.getComputedStyle(this.node,null).getPropertyValue(a):v(this.node,c)});var pa={\"alignment-baseline\":0,\"baseline-shift\":0,clip:0,\"clip-path\":0,\n",
       "\"clip-rule\":0,color:0,\"color-interpolation\":0,\"color-interpolation-filters\":0,\"color-profile\":0,\"color-rendering\":0,cursor:0,direction:0,display:0,\"dominant-baseline\":0,\"enable-background\":0,fill:0,\"fill-opacity\":0,\"fill-rule\":0,filter:0,\"flood-color\":0,\"flood-opacity\":0,font:0,\"font-family\":0,\"font-size\":0,\"font-size-adjust\":0,\"font-stretch\":0,\"font-style\":0,\"font-variant\":0,\"font-weight\":0,\"glyph-orientation-horizontal\":0,\"glyph-orientation-vertical\":0,\"image-rendering\":0,kerning:0,\"letter-spacing\":0,\n",
       "\"lighting-color\":0,marker:0,\"marker-end\":0,\"marker-mid\":0,\"marker-start\":0,mask:0,opacity:0,overflow:0,\"pointer-events\":0,\"shape-rendering\":0,\"stop-color\":0,\"stop-opacity\":0,stroke:0,\"stroke-dasharray\":0,\"stroke-dashoffset\":0,\"stroke-linecap\":0,\"stroke-linejoin\":0,\"stroke-miterlimit\":0,\"stroke-opacity\":0,\"stroke-width\":0,\"text-anchor\":0,\"text-decoration\":0,\"text-rendering\":0,\"unicode-bidi\":0,visibility:0,\"word-spacing\":0,\"writing-mode\":0};k.on(\"snap.util.attr\",function(c){var a=k.nt(),b={},a=a.substring(a.lastIndexOf(\".\")+\n",
       "1);b[a]=c;var m=a.replace(/-(\\w)/gi,function(c,a){return a.toUpperCase()}),a=a.replace(/[A-Z]/g,function(c){return\"-\"+c.toLowerCase()});pa[h](a)?this.node.style[m]=null==c?aa:c:v(this.node,b)});a.ajax=function(c,a,b,m){var e=new XMLHttpRequest,h=V();if(e){if(y(a,\"function\"))m=b,b=a,a=null;else if(y(a,\"object\")){var d=[],f;for(f in a)a.hasOwnProperty(f)&&d.push(encodeURIComponent(f)+\"=\"+encodeURIComponent(a[f]));a=d.join(\"&\")}e.open(a?\"POST\":\"GET\",c,!0);a&&(e.setRequestHeader(\"X-Requested-With\",\"XMLHttpRequest\"),\n",
       "e.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded\"));b&&(k.once(\"snap.ajax.\"+h+\".0\",b),k.once(\"snap.ajax.\"+h+\".200\",b),k.once(\"snap.ajax.\"+h+\".304\",b));e.onreadystatechange=function(){4==e.readyState&&k(\"snap.ajax.\"+h+\".\"+e.status,m,e)};if(4==e.readyState)return e;e.send(a);return e}};a.load=function(c,b,m){a.ajax(c,function(c){c=a.parse(c.responseText);m?b.call(m,c):b(c)})};a.getElementByPoint=function(c,a){var b,m,e=G.doc.elementFromPoint(c,a);if(G.win.opera&&\"svg\"==e.tagName){b=\n",
       "e;m=b.getBoundingClientRect();b=b.ownerDocument;var h=b.body,d=b.documentElement;b=m.top+(g.win.pageYOffset||d.scrollTop||h.scrollTop)-(d.clientTop||h.clientTop||0);m=m.left+(g.win.pageXOffset||d.scrollLeft||h.scrollLeft)-(d.clientLeft||h.clientLeft||0);h=e.createSVGRect();h.x=c-m;h.y=a-b;h.width=h.height=1;b=e.getIntersectionList(h,null);b.length&&(e=b[b.length-1])}return e?x(e):null};a.plugin=function(c){c(a,e,s,G,l)};return G.win.Snap=a}();C.plugin(function(a,k,y,M,A){function w(a,d,f,b,q,e){null==\n",
       "d&&\"[object SVGMatrix]\"==z.call(a)?(this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.e=a.e,this.f=a.f):null!=a?(this.a=+a,this.b=+d,this.c=+f,this.d=+b,this.e=+q,this.f=+e):(this.a=1,this.c=this.b=0,this.d=1,this.f=this.e=0)}var z=Object.prototype.toString,d=String,f=Math;(function(n){function k(a){return a[0]*a[0]+a[1]*a[1]}function p(a){var d=f.sqrt(k(a));a[0]&&(a[0]/=d);a[1]&&(a[1]/=d)}n.add=function(a,d,e,f,n,p){var k=[[],[],[] ],u=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1] ];d=[[a,\n",
       "e,n],[d,f,p],[0,0,1] ];a&&a instanceof w&&(d=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1] ]);for(a=0;3>a;a++)for(e=0;3>e;e++){for(f=n=0;3>f;f++)n+=u[a][f]*d[f][e];k[a][e]=n}this.a=k[0][0];this.b=k[1][0];this.c=k[0][1];this.d=k[1][1];this.e=k[0][2];this.f=k[1][2];return this};n.invert=function(){var a=this.a*this.d-this.b*this.c;return new w(this.d/a,-this.b/a,-this.c/a,this.a/a,(this.c*this.f-this.d*this.e)/a,(this.b*this.e-this.a*this.f)/a)};n.clone=function(){return new w(this.a,this.b,this.c,this.d,this.e,\n",
       "this.f)};n.translate=function(a,d){return this.add(1,0,0,1,a,d)};n.scale=function(a,d,e,f){null==d&&(d=a);(e||f)&&this.add(1,0,0,1,e,f);this.add(a,0,0,d,0,0);(e||f)&&this.add(1,0,0,1,-e,-f);return this};n.rotate=function(b,d,e){b=a.rad(b);d=d||0;e=e||0;var l=+f.cos(b).toFixed(9);b=+f.sin(b).toFixed(9);this.add(l,b,-b,l,d,e);return this.add(1,0,0,1,-d,-e)};n.x=function(a,d){return a*this.a+d*this.c+this.e};n.y=function(a,d){return a*this.b+d*this.d+this.f};n.get=function(a){return+this[d.fromCharCode(97+\n",
       "a)].toFixed(4)};n.toString=function(){return\"matrix(\"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+\")\"};n.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]};n.determinant=function(){return this.a*this.d-this.b*this.c};n.split=function(){var b={};b.dx=this.e;b.dy=this.f;var d=[[this.a,this.c],[this.b,this.d] ];b.scalex=f.sqrt(k(d[0]));p(d[0]);b.shear=d[0][0]*d[1][0]+d[0][1]*d[1][1];d[1]=[d[1][0]-d[0][0]*b.shear,d[1][1]-d[0][1]*b.shear];b.scaley=f.sqrt(k(d[1]));\n",
       "p(d[1]);b.shear/=b.scaley;0>this.determinant()&&(b.scalex=-b.scalex);var e=-d[0][1],d=d[1][1];0>d?(b.rotate=a.deg(f.acos(d)),0>e&&(b.rotate=360-b.rotate)):b.rotate=a.deg(f.asin(e));b.isSimple=!+b.shear.toFixed(9)&&(b.scalex.toFixed(9)==b.scaley.toFixed(9)||!b.rotate);b.isSuperSimple=!+b.shear.toFixed(9)&&b.scalex.toFixed(9)==b.scaley.toFixed(9)&&!b.rotate;b.noRotation=!+b.shear.toFixed(9)&&!b.rotate;return b};n.toTransformString=function(a){a=a||this.split();if(+a.shear.toFixed(9))return\"m\"+[this.get(0),\n",
       "this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)];a.scalex=+a.scalex.toFixed(4);a.scaley=+a.scaley.toFixed(4);a.rotate=+a.rotate.toFixed(4);return(a.dx||a.dy?\"t\"+[+a.dx.toFixed(4),+a.dy.toFixed(4)]:\"\")+(1!=a.scalex||1!=a.scaley?\"s\"+[a.scalex,a.scaley,0,0]:\"\")+(a.rotate?\"r\"+[+a.rotate.toFixed(4),0,0]:\"\")}})(w.prototype);a.Matrix=w;a.matrix=function(a,d,f,b,k,e){return new w(a,d,f,b,k,e)}});C.plugin(function(a,v,y,M,A){function w(h){return function(d){k.stop();d instanceof A&&1==d.node.childNodes.length&&\n",
       "(\"radialGradient\"==d.node.firstChild.tagName||\"linearGradient\"==d.node.firstChild.tagName||\"pattern\"==d.node.firstChild.tagName)&&(d=d.node.firstChild,b(this).appendChild(d),d=u(d));if(d instanceof v)if(\"radialGradient\"==d.type||\"linearGradient\"==d.type||\"pattern\"==d.type){d.node.id||e(d.node,{id:d.id});var f=l(d.node.id)}else f=d.attr(h);else f=a.color(d),f.error?(f=a(b(this).ownerSVGElement).gradient(d))?(f.node.id||e(f.node,{id:f.id}),f=l(f.node.id)):f=d:f=r(f);d={};d[h]=f;e(this.node,d);this.node.style[h]=\n",
       "x}}function z(a){k.stop();a==+a&&(a+=\"px\");this.node.style.fontSize=a}function d(a){var b=[];a=a.childNodes;for(var e=0,f=a.length;e<f;e++){var l=a[e];3==l.nodeType&&b.push(l.nodeValue);\"tspan\"==l.tagName&&(1==l.childNodes.length&&3==l.firstChild.nodeType?b.push(l.firstChild.nodeValue):b.push(d(l)))}return b}function f(){k.stop();return this.node.style.fontSize}var n=a._.make,u=a._.wrap,p=a.is,b=a._.getSomeDefs,q=/^url\\(#?([^)]+)\\)$/,e=a._.$,l=a.url,r=String,s=a._.separator,x=\"\";k.on(\"snap.util.attr.mask\",\n",
       "function(a){if(a instanceof v||a instanceof A){k.stop();a instanceof A&&1==a.node.childNodes.length&&(a=a.node.firstChild,b(this).appendChild(a),a=u(a));if(\"mask\"==a.type)var d=a;else d=n(\"mask\",b(this)),d.node.appendChild(a.node);!d.node.id&&e(d.node,{id:d.id});e(this.node,{mask:l(d.id)})}});(function(a){k.on(\"snap.util.attr.clip\",a);k.on(\"snap.util.attr.clip-path\",a);k.on(\"snap.util.attr.clipPath\",a)})(function(a){if(a instanceof v||a instanceof A){k.stop();if(\"clipPath\"==a.type)var d=a;else d=\n",
       "n(\"clipPath\",b(this)),d.node.appendChild(a.node),!d.node.id&&e(d.node,{id:d.id});e(this.node,{\"clip-path\":l(d.id)})}});k.on(\"snap.util.attr.fill\",w(\"fill\"));k.on(\"snap.util.attr.stroke\",w(\"stroke\"));var G=/^([lr])(?:\\(([^)]*)\\))?(.*)$/i;k.on(\"snap.util.grad.parse\",function(a){a=r(a);var b=a.match(G);if(!b)return null;a=b[1];var e=b[2],b=b[3],e=e.split(/\\s*,\\s*/).map(function(a){return+a==a?+a:a});1==e.length&&0==e[0]&&(e=[]);b=b.split(\"-\");b=b.map(function(a){a=a.split(\":\");var b={color:a[0]};a[1]&&\n",
       "(b.offset=parseFloat(a[1]));return b});return{type:a,params:e,stops:b}});k.on(\"snap.util.attr.d\",function(b){k.stop();p(b,\"array\")&&p(b[0],\"array\")&&(b=a.path.toString.call(b));b=r(b);b.match(/[ruo]/i)&&(b=a.path.toAbsolute(b));e(this.node,{d:b})})(-1);k.on(\"snap.util.attr.#text\",function(a){k.stop();a=r(a);for(a=M.doc.createTextNode(a);this.node.firstChild;)this.node.removeChild(this.node.firstChild);this.node.appendChild(a)})(-1);k.on(\"snap.util.attr.path\",function(a){k.stop();this.attr({d:a})})(-1);\n",
       "k.on(\"snap.util.attr.class\",function(a){k.stop();this.node.className.baseVal=a})(-1);k.on(\"snap.util.attr.viewBox\",function(a){a=p(a,\"object\")&&\"x\"in a?[a.x,a.y,a.width,a.height].join(\" \"):p(a,\"array\")?a.join(\" \"):a;e(this.node,{viewBox:a});k.stop()})(-1);k.on(\"snap.util.attr.transform\",function(a){this.transform(a);k.stop()})(-1);k.on(\"snap.util.attr.r\",function(a){\"rect\"==this.type&&(k.stop(),e(this.node,{rx:a,ry:a}))})(-1);k.on(\"snap.util.attr.textpath\",function(a){k.stop();if(\"text\"==this.type){var d,\n",
       "f;if(!a&&this.textPath){for(a=this.textPath;a.node.firstChild;)this.node.appendChild(a.node.firstChild);a.remove();delete this.textPath}else if(p(a,\"string\")?(d=b(this),a=u(d.parentNode).path(a),d.appendChild(a.node),d=a.id,a.attr({id:d})):(a=u(a),a instanceof v&&(d=a.attr(\"id\"),d||(d=a.id,a.attr({id:d})))),d)if(a=this.textPath,f=this.node,a)a.attr({\"xlink:href\":\"#\"+d});else{for(a=e(\"textPath\",{\"xlink:href\":\"#\"+d});f.firstChild;)a.appendChild(f.firstChild);f.appendChild(a);this.textPath=u(a)}}})(-1);\n",
       "k.on(\"snap.util.attr.text\",function(a){if(\"text\"==this.type){for(var b=this.node,d=function(a){var b=e(\"tspan\");if(p(a,\"array\"))for(var f=0;f<a.length;f++)b.appendChild(d(a[f]));else b.appendChild(M.doc.createTextNode(a));b.normalize&&b.normalize();return b};b.firstChild;)b.removeChild(b.firstChild);for(a=d(a);a.firstChild;)b.appendChild(a.firstChild)}k.stop()})(-1);k.on(\"snap.util.attr.fontSize\",z)(-1);k.on(\"snap.util.attr.font-size\",z)(-1);k.on(\"snap.util.getattr.transform\",function(){k.stop();\n",
       "return this.transform()})(-1);k.on(\"snap.util.getattr.textpath\",function(){k.stop();return this.textPath})(-1);(function(){function b(d){return function(){k.stop();var b=M.doc.defaultView.getComputedStyle(this.node,null).getPropertyValue(\"marker-\"+d);return\"none\"==b?b:a(M.doc.getElementById(b.match(q)[1]))}}function d(a){return function(b){k.stop();var d=\"marker\"+a.charAt(0).toUpperCase()+a.substring(1);if(\"\"==b||!b)this.node.style[d]=\"none\";else if(\"marker\"==b.type){var f=b.node.id;f||e(b.node,{id:b.id});\n",
       "this.node.style[d]=l(f)}}}k.on(\"snap.util.getattr.marker-end\",b(\"end\"))(-1);k.on(\"snap.util.getattr.markerEnd\",b(\"end\"))(-1);k.on(\"snap.util.getattr.marker-start\",b(\"start\"))(-1);k.on(\"snap.util.getattr.markerStart\",b(\"start\"))(-1);k.on(\"snap.util.getattr.marker-mid\",b(\"mid\"))(-1);k.on(\"snap.util.getattr.markerMid\",b(\"mid\"))(-1);k.on(\"snap.util.attr.marker-end\",d(\"end\"))(-1);k.on(\"snap.util.attr.markerEnd\",d(\"end\"))(-1);k.on(\"snap.util.attr.marker-start\",d(\"start\"))(-1);k.on(\"snap.util.attr.markerStart\",\n",
       "d(\"start\"))(-1);k.on(\"snap.util.attr.marker-mid\",d(\"mid\"))(-1);k.on(\"snap.util.attr.markerMid\",d(\"mid\"))(-1)})();k.on(\"snap.util.getattr.r\",function(){if(\"rect\"==this.type&&e(this.node,\"rx\")==e(this.node,\"ry\"))return k.stop(),e(this.node,\"rx\")})(-1);k.on(\"snap.util.getattr.text\",function(){if(\"text\"==this.type||\"tspan\"==this.type){k.stop();var a=d(this.node);return 1==a.length?a[0]:a}})(-1);k.on(\"snap.util.getattr.#text\",function(){return this.node.textContent})(-1);k.on(\"snap.util.getattr.viewBox\",\n",
       "function(){k.stop();var b=e(this.node,\"viewBox\");if(b)return b=b.split(s),a._.box(+b[0],+b[1],+b[2],+b[3])})(-1);k.on(\"snap.util.getattr.points\",function(){var a=e(this.node,\"points\");k.stop();if(a)return a.split(s)})(-1);k.on(\"snap.util.getattr.path\",function(){var a=e(this.node,\"d\");k.stop();return a})(-1);k.on(\"snap.util.getattr.class\",function(){return this.node.className.baseVal})(-1);k.on(\"snap.util.getattr.fontSize\",f)(-1);k.on(\"snap.util.getattr.font-size\",f)(-1)});C.plugin(function(a,v,y,\n",
       "M,A){function w(a){return a}function z(a){return function(b){return+b.toFixed(3)+a}}var d={\"+\":function(a,b){return a+b},\"-\":function(a,b){return a-b},\"/\":function(a,b){return a/b},\"*\":function(a,b){return a*b}},f=String,n=/[a-z]+$/i,u=/^\\s*([+\\-\\/*])\\s*=\\s*([\\d.eE+\\-]+)\\s*([^\\d\\s]+)?\\s*$/;k.on(\"snap.util.attr\",function(a){if(a=f(a).match(u)){var b=k.nt(),b=b.substring(b.lastIndexOf(\".\")+1),q=this.attr(b),e={};k.stop();var l=a[3]||\"\",r=q.match(n),s=d[a[1] ];r&&r==l?a=s(parseFloat(q),+a[2]):(q=this.asPX(b),\n",
       "a=s(this.asPX(b),this.asPX(b,a[2]+l)));isNaN(q)||isNaN(a)||(e[b]=a,this.attr(e))}})(-10);k.on(\"snap.util.equal\",function(a,b){var q=f(this.attr(a)||\"\"),e=f(b).match(u);if(e){k.stop();var l=e[3]||\"\",r=q.match(n),s=d[e[1] ];if(r&&r==l)return{from:parseFloat(q),to:s(parseFloat(q),+e[2]),f:z(r)};q=this.asPX(a);return{from:q,to:s(q,this.asPX(a,e[2]+l)),f:w}}})(-10)});C.plugin(function(a,v,y,M,A){var w=y.prototype,z=a.is;w.rect=function(a,d,k,p,b,q){var e;null==q&&(q=b);z(a,\"object\")&&\"[object Object]\"==\n",
       "a?e=a:null!=a&&(e={x:a,y:d,width:k,height:p},null!=b&&(e.rx=b,e.ry=q));return this.el(\"rect\",e)};w.circle=function(a,d,k){var p;z(a,\"object\")&&\"[object Object]\"==a?p=a:null!=a&&(p={cx:a,cy:d,r:k});return this.el(\"circle\",p)};var d=function(){function a(){this.parentNode.removeChild(this)}return function(d,k){var p=M.doc.createElement(\"img\"),b=M.doc.body;p.style.cssText=\"position:absolute;left:-9999em;top:-9999em\";p.onload=function(){k.call(p);p.onload=p.onerror=null;b.removeChild(p)};p.onerror=a;\n",
       "b.appendChild(p);p.src=d}}();w.image=function(f,n,k,p,b){var q=this.el(\"image\");if(z(f,\"object\")&&\"src\"in f)q.attr(f);else if(null!=f){var e={\"xlink:href\":f,preserveAspectRatio:\"none\"};null!=n&&null!=k&&(e.x=n,e.y=k);null!=p&&null!=b?(e.width=p,e.height=b):d(f,function(){a._.$(q.node,{width:this.offsetWidth,height:this.offsetHeight})});a._.$(q.node,e)}return q};w.ellipse=function(a,d,k,p){var b;z(a,\"object\")&&\"[object Object]\"==a?b=a:null!=a&&(b={cx:a,cy:d,rx:k,ry:p});return this.el(\"ellipse\",b)};\n",
       "w.path=function(a){var d;z(a,\"object\")&&!z(a,\"array\")?d=a:a&&(d={d:a});return this.el(\"path\",d)};w.group=w.g=function(a){var d=this.el(\"g\");1==arguments.length&&a&&!a.type?d.attr(a):arguments.length&&d.add(Array.prototype.slice.call(arguments,0));return d};w.svg=function(a,d,k,p,b,q,e,l){var r={};z(a,\"object\")&&null==d?r=a:(null!=a&&(r.x=a),null!=d&&(r.y=d),null!=k&&(r.width=k),null!=p&&(r.height=p),null!=b&&null!=q&&null!=e&&null!=l&&(r.viewBox=[b,q,e,l]));return this.el(\"svg\",r)};w.mask=function(a){var d=\n",
       "this.el(\"mask\");1==arguments.length&&a&&!a.type?d.attr(a):arguments.length&&d.add(Array.prototype.slice.call(arguments,0));return d};w.ptrn=function(a,d,k,p,b,q,e,l){if(z(a,\"object\"))var r=a;else arguments.length?(r={},null!=a&&(r.x=a),null!=d&&(r.y=d),null!=k&&(r.width=k),null!=p&&(r.height=p),null!=b&&null!=q&&null!=e&&null!=l&&(r.viewBox=[b,q,e,l])):r={patternUnits:\"userSpaceOnUse\"};return this.el(\"pattern\",r)};w.use=function(a){return null!=a?(make(\"use\",this.node),a instanceof v&&(a.attr(\"id\")||\n",
       "a.attr({id:ID()}),a=a.attr(\"id\")),this.el(\"use\",{\"xlink:href\":a})):v.prototype.use.call(this)};w.text=function(a,d,k){var p={};z(a,\"object\")?p=a:null!=a&&(p={x:a,y:d,text:k||\"\"});return this.el(\"text\",p)};w.line=function(a,d,k,p){var b={};z(a,\"object\")?b=a:null!=a&&(b={x1:a,x2:k,y1:d,y2:p});return this.el(\"line\",b)};w.polyline=function(a){1<arguments.length&&(a=Array.prototype.slice.call(arguments,0));var d={};z(a,\"object\")&&!z(a,\"array\")?d=a:null!=a&&(d={points:a});return this.el(\"polyline\",d)};\n",
       "w.polygon=function(a){1<arguments.length&&(a=Array.prototype.slice.call(arguments,0));var d={};z(a,\"object\")&&!z(a,\"array\")?d=a:null!=a&&(d={points:a});return this.el(\"polygon\",d)};(function(){function d(){return this.selectAll(\"stop\")}function n(b,d){var f=e(\"stop\"),k={offset:+d+\"%\"};b=a.color(b);k[\"stop-color\"]=b.hex;1>b.opacity&&(k[\"stop-opacity\"]=b.opacity);e(f,k);this.node.appendChild(f);return this}function u(){if(\"linearGradient\"==this.type){var b=e(this.node,\"x1\")||0,d=e(this.node,\"x2\")||\n",
       "1,f=e(this.node,\"y1\")||0,k=e(this.node,\"y2\")||0;return a._.box(b,f,math.abs(d-b),math.abs(k-f))}b=this.node.r||0;return a._.box((this.node.cx||0.5)-b,(this.node.cy||0.5)-b,2*b,2*b)}function p(a,d){function f(a,b){for(var d=(b-u)/(a-w),e=w;e<a;e++)h[e].offset=+(+u+d*(e-w)).toFixed(2);w=a;u=b}var n=k(\"snap.util.grad.parse\",null,d).firstDefined(),p;if(!n)return null;n.params.unshift(a);p=\"l\"==n.type.toLowerCase()?b.apply(0,n.params):q.apply(0,n.params);n.type!=n.type.toLowerCase()&&e(p.node,{gradientUnits:\"userSpaceOnUse\"});\n",
       "var h=n.stops,n=h.length,u=0,w=0;n--;for(var v=0;v<n;v++)\"offset\"in h[v]&&f(v,h[v].offset);h[n].offset=h[n].offset||100;f(n,h[n].offset);for(v=0;v<=n;v++){var y=h[v];p.addStop(y.color,y.offset)}return p}function b(b,k,p,q,w){b=a._.make(\"linearGradient\",b);b.stops=d;b.addStop=n;b.getBBox=u;null!=k&&e(b.node,{x1:k,y1:p,x2:q,y2:w});return b}function q(b,k,p,q,w,h){b=a._.make(\"radialGradient\",b);b.stops=d;b.addStop=n;b.getBBox=u;null!=k&&e(b.node,{cx:k,cy:p,r:q});null!=w&&null!=h&&e(b.node,{fx:w,fy:h});\n",
       "return b}var e=a._.$;w.gradient=function(a){return p(this.defs,a)};w.gradientLinear=function(a,d,e,f){return b(this.defs,a,d,e,f)};w.gradientRadial=function(a,b,d,e,f){return q(this.defs,a,b,d,e,f)};w.toString=function(){var b=this.node.ownerDocument,d=b.createDocumentFragment(),b=b.createElement(\"div\"),e=this.node.cloneNode(!0);d.appendChild(b);b.appendChild(e);a._.$(e,{xmlns:\"http://www.w3.org/2000/svg\"});b=b.innerHTML;d.removeChild(d.firstChild);return b};w.clear=function(){for(var a=this.node.firstChild,\n",
       "b;a;)b=a.nextSibling,\"defs\"!=a.tagName?a.parentNode.removeChild(a):w.clear.call({node:a}),a=b}})()});C.plugin(function(a,k,y,M){function A(a){var b=A.ps=A.ps||{};b[a]?b[a].sleep=100:b[a]={sleep:100};setTimeout(function(){for(var d in b)b[L](d)&&d!=a&&(b[d].sleep--,!b[d].sleep&&delete b[d])});return b[a]}function w(a,b,d,e){null==a&&(a=b=d=e=0);null==b&&(b=a.y,d=a.width,e=a.height,a=a.x);return{x:a,y:b,width:d,w:d,height:e,h:e,x2:a+d,y2:b+e,cx:a+d/2,cy:b+e/2,r1:F.min(d,e)/2,r2:F.max(d,e)/2,r0:F.sqrt(d*\n",
       "d+e*e)/2,path:s(a,b,d,e),vb:[a,b,d,e].join(\" \")}}function z(){return this.join(\",\").replace(N,\"$1\")}function d(a){a=C(a);a.toString=z;return a}function f(a,b,d,h,f,k,l,n,p){if(null==p)return e(a,b,d,h,f,k,l,n);if(0>p||e(a,b,d,h,f,k,l,n)<p)p=void 0;else{var q=0.5,O=1-q,s;for(s=e(a,b,d,h,f,k,l,n,O);0.01<Z(s-p);)q/=2,O+=(s<p?1:-1)*q,s=e(a,b,d,h,f,k,l,n,O);p=O}return u(a,b,d,h,f,k,l,n,p)}function n(b,d){function e(a){return+(+a).toFixed(3)}return a._.cacher(function(a,h,l){a instanceof k&&(a=a.attr(\"d\"));\n",
       "a=I(a);for(var n,p,D,q,O=\"\",s={},c=0,t=0,r=a.length;t<r;t++){D=a[t];if(\"M\"==D[0])n=+D[1],p=+D[2];else{q=f(n,p,D[1],D[2],D[3],D[4],D[5],D[6]);if(c+q>h){if(d&&!s.start){n=f(n,p,D[1],D[2],D[3],D[4],D[5],D[6],h-c);O+=[\"C\"+e(n.start.x),e(n.start.y),e(n.m.x),e(n.m.y),e(n.x),e(n.y)];if(l)return O;s.start=O;O=[\"M\"+e(n.x),e(n.y)+\"C\"+e(n.n.x),e(n.n.y),e(n.end.x),e(n.end.y),e(D[5]),e(D[6])].join();c+=q;n=+D[5];p=+D[6];continue}if(!b&&!d)return n=f(n,p,D[1],D[2],D[3],D[4],D[5],D[6],h-c)}c+=q;n=+D[5];p=+D[6]}O+=\n",
       "D.shift()+D}s.end=O;return n=b?c:d?s:u(n,p,D[0],D[1],D[2],D[3],D[4],D[5],1)},null,a._.clone)}function u(a,b,d,e,h,f,k,l,n){var p=1-n,q=ma(p,3),s=ma(p,2),c=n*n,t=c*n,r=q*a+3*s*n*d+3*p*n*n*h+t*k,q=q*b+3*s*n*e+3*p*n*n*f+t*l,s=a+2*n*(d-a)+c*(h-2*d+a),t=b+2*n*(e-b)+c*(f-2*e+b),x=d+2*n*(h-d)+c*(k-2*h+d),c=e+2*n*(f-e)+c*(l-2*f+e);a=p*a+n*d;b=p*b+n*e;h=p*h+n*k;f=p*f+n*l;l=90-180*F.atan2(s-x,t-c)/S;return{x:r,y:q,m:{x:s,y:t},n:{x:x,y:c},start:{x:a,y:b},end:{x:h,y:f},alpha:l}}function p(b,d,e,h,f,n,k,l){a.is(b,\n",
       "\"array\")||(b=[b,d,e,h,f,n,k,l]);b=U.apply(null,b);return w(b.min.x,b.min.y,b.max.x-b.min.x,b.max.y-b.min.y)}function b(a,b,d){return b>=a.x&&b<=a.x+a.width&&d>=a.y&&d<=a.y+a.height}function q(a,d){a=w(a);d=w(d);return b(d,a.x,a.y)||b(d,a.x2,a.y)||b(d,a.x,a.y2)||b(d,a.x2,a.y2)||b(a,d.x,d.y)||b(a,d.x2,d.y)||b(a,d.x,d.y2)||b(a,d.x2,d.y2)||(a.x<d.x2&&a.x>d.x||d.x<a.x2&&d.x>a.x)&&(a.y<d.y2&&a.y>d.y||d.y<a.y2&&d.y>a.y)}function e(a,b,d,e,h,f,n,k,l){null==l&&(l=1);l=(1<l?1:0>l?0:l)/2;for(var p=[-0.1252,\n",
       "0.1252,-0.3678,0.3678,-0.5873,0.5873,-0.7699,0.7699,-0.9041,0.9041,-0.9816,0.9816],q=[0.2491,0.2491,0.2335,0.2335,0.2032,0.2032,0.1601,0.1601,0.1069,0.1069,0.0472,0.0472],s=0,c=0;12>c;c++)var t=l*p[c]+l,r=t*(t*(-3*a+9*d-9*h+3*n)+6*a-12*d+6*h)-3*a+3*d,t=t*(t*(-3*b+9*e-9*f+3*k)+6*b-12*e+6*f)-3*b+3*e,s=s+q[c]*F.sqrt(r*r+t*t);return l*s}function l(a,b,d){a=I(a);b=I(b);for(var h,f,l,n,k,s,r,O,x,c,t=d?0:[],w=0,v=a.length;w<v;w++)if(x=a[w],\"M\"==x[0])h=k=x[1],f=s=x[2];else{\"C\"==x[0]?(x=[h,f].concat(x.slice(1)),\n",
       "h=x[6],f=x[7]):(x=[h,f,h,f,k,s,k,s],h=k,f=s);for(var G=0,y=b.length;G<y;G++)if(c=b[G],\"M\"==c[0])l=r=c[1],n=O=c[2];else{\"C\"==c[0]?(c=[l,n].concat(c.slice(1)),l=c[6],n=c[7]):(c=[l,n,l,n,r,O,r,O],l=r,n=O);var z;var K=x,B=c;z=d;var H=p(K),J=p(B);if(q(H,J)){for(var H=e.apply(0,K),J=e.apply(0,B),H=~~(H/8),J=~~(J/8),U=[],A=[],F={},M=z?0:[],P=0;P<H+1;P++){var C=u.apply(0,K.concat(P/H));U.push({x:C.x,y:C.y,t:P/H})}for(P=0;P<J+1;P++)C=u.apply(0,B.concat(P/J)),A.push({x:C.x,y:C.y,t:P/J});for(P=0;P<H;P++)for(K=\n",
       "0;K<J;K++){var Q=U[P],L=U[P+1],B=A[K],C=A[K+1],N=0.001>Z(L.x-Q.x)?\"y\":\"x\",S=0.001>Z(C.x-B.x)?\"y\":\"x\",R;R=Q.x;var Y=Q.y,V=L.x,ea=L.y,fa=B.x,ga=B.y,ha=C.x,ia=C.y;if(W(R,V)<X(fa,ha)||X(R,V)>W(fa,ha)||W(Y,ea)<X(ga,ia)||X(Y,ea)>W(ga,ia))R=void 0;else{var $=(R*ea-Y*V)*(fa-ha)-(R-V)*(fa*ia-ga*ha),aa=(R*ea-Y*V)*(ga-ia)-(Y-ea)*(fa*ia-ga*ha),ja=(R-V)*(ga-ia)-(Y-ea)*(fa-ha);if(ja){var $=$/ja,aa=aa/ja,ja=+$.toFixed(2),ba=+aa.toFixed(2);R=ja<+X(R,V).toFixed(2)||ja>+W(R,V).toFixed(2)||ja<+X(fa,ha).toFixed(2)||\n",
       "ja>+W(fa,ha).toFixed(2)||ba<+X(Y,ea).toFixed(2)||ba>+W(Y,ea).toFixed(2)||ba<+X(ga,ia).toFixed(2)||ba>+W(ga,ia).toFixed(2)?void 0:{x:$,y:aa}}else R=void 0}R&&F[R.x.toFixed(4)]!=R.y.toFixed(4)&&(F[R.x.toFixed(4)]=R.y.toFixed(4),Q=Q.t+Z((R[N]-Q[N])/(L[N]-Q[N]))*(L.t-Q.t),B=B.t+Z((R[S]-B[S])/(C[S]-B[S]))*(C.t-B.t),0<=Q&&1>=Q&&0<=B&&1>=B&&(z?M++:M.push({x:R.x,y:R.y,t1:Q,t2:B})))}z=M}else z=z?0:[];if(d)t+=z;else{H=0;for(J=z.length;H<J;H++)z[H].segment1=w,z[H].segment2=G,z[H].bez1=x,z[H].bez2=c;t=t.concat(z)}}}return t}\n",
       "function r(a){var b=A(a);if(b.bbox)return C(b.bbox);if(!a)return w();a=I(a);for(var d=0,e=0,h=[],f=[],l,n=0,k=a.length;n<k;n++)l=a[n],\"M\"==l[0]?(d=l[1],e=l[2],h.push(d),f.push(e)):(d=U(d,e,l[1],l[2],l[3],l[4],l[5],l[6]),h=h.concat(d.min.x,d.max.x),f=f.concat(d.min.y,d.max.y),d=l[5],e=l[6]);a=X.apply(0,h);l=X.apply(0,f);h=W.apply(0,h);f=W.apply(0,f);f=w(a,l,h-a,f-l);b.bbox=C(f);return f}function s(a,b,d,e,h){if(h)return[[\"M\",+a+ +h,b],[\"l\",d-2*h,0],[\"a\",h,h,0,0,1,h,h],[\"l\",0,e-2*h],[\"a\",h,h,0,0,1,\n",
       "-h,h],[\"l\",2*h-d,0],[\"a\",h,h,0,0,1,-h,-h],[\"l\",0,2*h-e],[\"a\",h,h,0,0,1,h,-h],[\"z\"] ];a=[[\"M\",a,b],[\"l\",d,0],[\"l\",0,e],[\"l\",-d,0],[\"z\"] ];a.toString=z;return a}function x(a,b,d,e,h){null==h&&null==e&&(e=d);a=+a;b=+b;d=+d;e=+e;if(null!=h){var f=Math.PI/180,l=a+d*Math.cos(-e*f);a+=d*Math.cos(-h*f);var n=b+d*Math.sin(-e*f);b+=d*Math.sin(-h*f);d=[[\"M\",l,n],[\"A\",d,d,0,+(180<h-e),0,a,b] ]}else d=[[\"M\",a,b],[\"m\",0,-e],[\"a\",d,e,0,1,1,0,2*e],[\"a\",d,e,0,1,1,0,-2*e],[\"z\"] ];d.toString=z;return d}function G(b){var e=\n",
       "A(b);if(e.abs)return d(e.abs);Q(b,\"array\")&&Q(b&&b[0],\"array\")||(b=a.parsePathString(b));if(!b||!b.length)return[[\"M\",0,0] ];var h=[],f=0,l=0,n=0,k=0,p=0;\"M\"==b[0][0]&&(f=+b[0][1],l=+b[0][2],n=f,k=l,p++,h[0]=[\"M\",f,l]);for(var q=3==b.length&&\"M\"==b[0][0]&&\"R\"==b[1][0].toUpperCase()&&\"Z\"==b[2][0].toUpperCase(),s,r,w=p,c=b.length;w<c;w++){h.push(s=[]);r=b[w];p=r[0];if(p!=p.toUpperCase())switch(s[0]=p.toUpperCase(),s[0]){case \"A\":s[1]=r[1];s[2]=r[2];s[3]=r[3];s[4]=r[4];s[5]=r[5];s[6]=+r[6]+f;s[7]=+r[7]+\n",
       "l;break;case \"V\":s[1]=+r[1]+l;break;case \"H\":s[1]=+r[1]+f;break;case \"R\":for(var t=[f,l].concat(r.slice(1)),u=2,v=t.length;u<v;u++)t[u]=+t[u]+f,t[++u]=+t[u]+l;h.pop();h=h.concat(P(t,q));break;case \"O\":h.pop();t=x(f,l,r[1],r[2]);t.push(t[0]);h=h.concat(t);break;case \"U\":h.pop();h=h.concat(x(f,l,r[1],r[2],r[3]));s=[\"U\"].concat(h[h.length-1].slice(-2));break;case \"M\":n=+r[1]+f,k=+r[2]+l;default:for(u=1,v=r.length;u<v;u++)s[u]=+r[u]+(u%2?f:l)}else if(\"R\"==p)t=[f,l].concat(r.slice(1)),h.pop(),h=h.concat(P(t,\n",
       "q)),s=[\"R\"].concat(r.slice(-2));else if(\"O\"==p)h.pop(),t=x(f,l,r[1],r[2]),t.push(t[0]),h=h.concat(t);else if(\"U\"==p)h.pop(),h=h.concat(x(f,l,r[1],r[2],r[3])),s=[\"U\"].concat(h[h.length-1].slice(-2));else for(t=0,u=r.length;t<u;t++)s[t]=r[t];p=p.toUpperCase();if(\"O\"!=p)switch(s[0]){case \"Z\":f=+n;l=+k;break;case \"H\":f=s[1];break;case \"V\":l=s[1];break;case \"M\":n=s[s.length-2],k=s[s.length-1];default:f=s[s.length-2],l=s[s.length-1]}}h.toString=z;e.abs=d(h);return h}function h(a,b,d,e){return[a,b,d,e,d,\n",
       "e]}function J(a,b,d,e,h,f){var l=1/3,n=2/3;return[l*a+n*d,l*b+n*e,l*h+n*d,l*f+n*e,h,f]}function K(b,d,e,h,f,l,n,k,p,s){var r=120*S/180,q=S/180*(+f||0),c=[],t,x=a._.cacher(function(a,b,c){var d=a*F.cos(c)-b*F.sin(c);a=a*F.sin(c)+b*F.cos(c);return{x:d,y:a}});if(s)v=s[0],t=s[1],l=s[2],u=s[3];else{t=x(b,d,-q);b=t.x;d=t.y;t=x(k,p,-q);k=t.x;p=t.y;F.cos(S/180*f);F.sin(S/180*f);t=(b-k)/2;v=(d-p)/2;u=t*t/(e*e)+v*v/(h*h);1<u&&(u=F.sqrt(u),e*=u,h*=u);var u=e*e,w=h*h,u=(l==n?-1:1)*F.sqrt(Z((u*w-u*v*v-w*t*t)/\n",
       "(u*v*v+w*t*t)));l=u*e*v/h+(b+k)/2;var u=u*-h*t/e+(d+p)/2,v=F.asin(((d-u)/h).toFixed(9));t=F.asin(((p-u)/h).toFixed(9));v=b<l?S-v:v;t=k<l?S-t:t;0>v&&(v=2*S+v);0>t&&(t=2*S+t);n&&v>t&&(v-=2*S);!n&&t>v&&(t-=2*S)}if(Z(t-v)>r){var c=t,w=k,G=p;t=v+r*(n&&t>v?1:-1);k=l+e*F.cos(t);p=u+h*F.sin(t);c=K(k,p,e,h,f,0,n,w,G,[t,c,l,u])}l=t-v;f=F.cos(v);r=F.sin(v);n=F.cos(t);t=F.sin(t);l=F.tan(l/4);e=4/3*e*l;l*=4/3*h;h=[b,d];b=[b+e*r,d-l*f];d=[k+e*t,p-l*n];k=[k,p];b[0]=2*h[0]-b[0];b[1]=2*h[1]-b[1];if(s)return[b,d,k].concat(c);\n",
       "c=[b,d,k].concat(c).join().split(\",\");s=[];k=0;for(p=c.length;k<p;k++)s[k]=k%2?x(c[k-1],c[k],q).y:x(c[k],c[k+1],q).x;return s}function U(a,b,d,e,h,f,l,k){for(var n=[],p=[[],[] ],s,r,c,t,q=0;2>q;++q)0==q?(r=6*a-12*d+6*h,s=-3*a+9*d-9*h+3*l,c=3*d-3*a):(r=6*b-12*e+6*f,s=-3*b+9*e-9*f+3*k,c=3*e-3*b),1E-12>Z(s)?1E-12>Z(r)||(s=-c/r,0<s&&1>s&&n.push(s)):(t=r*r-4*c*s,c=F.sqrt(t),0>t||(t=(-r+c)/(2*s),0<t&&1>t&&n.push(t),s=(-r-c)/(2*s),0<s&&1>s&&n.push(s)));for(r=q=n.length;q--;)s=n[q],c=1-s,p[0][q]=c*c*c*a+3*\n",
       "c*c*s*d+3*c*s*s*h+s*s*s*l,p[1][q]=c*c*c*b+3*c*c*s*e+3*c*s*s*f+s*s*s*k;p[0][r]=a;p[1][r]=b;p[0][r+1]=l;p[1][r+1]=k;p[0].length=p[1].length=r+2;return{min:{x:X.apply(0,p[0]),y:X.apply(0,p[1])},max:{x:W.apply(0,p[0]),y:W.apply(0,p[1])}}}function I(a,b){var e=!b&&A(a);if(!b&&e.curve)return d(e.curve);var f=G(a),l=b&&G(b),n={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},k={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},p=function(a,b,c){if(!a)return[\"C\",b.x,b.y,b.x,b.y,b.x,b.y];a[0]in{T:1,Q:1}||(b.qx=b.qy=null);\n",
       "switch(a[0]){case \"M\":b.X=a[1];b.Y=a[2];break;case \"A\":a=[\"C\"].concat(K.apply(0,[b.x,b.y].concat(a.slice(1))));break;case \"S\":\"C\"==c||\"S\"==c?(c=2*b.x-b.bx,b=2*b.y-b.by):(c=b.x,b=b.y);a=[\"C\",c,b].concat(a.slice(1));break;case \"T\":\"Q\"==c||\"T\"==c?(b.qx=2*b.x-b.qx,b.qy=2*b.y-b.qy):(b.qx=b.x,b.qy=b.y);a=[\"C\"].concat(J(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case \"Q\":b.qx=a[1];b.qy=a[2];a=[\"C\"].concat(J(b.x,b.y,a[1],a[2],a[3],a[4]));break;case \"L\":a=[\"C\"].concat(h(b.x,b.y,a[1],a[2]));break;case \"H\":a=[\"C\"].concat(h(b.x,\n",
       "b.y,a[1],b.y));break;case \"V\":a=[\"C\"].concat(h(b.x,b.y,b.x,a[1]));break;case \"Z\":a=[\"C\"].concat(h(b.x,b.y,b.X,b.Y))}return a},s=function(a,b){if(7<a[b].length){a[b].shift();for(var c=a[b];c.length;)q[b]=\"A\",l&&(u[b]=\"A\"),a.splice(b++,0,[\"C\"].concat(c.splice(0,6)));a.splice(b,1);v=W(f.length,l&&l.length||0)}},r=function(a,b,c,d,e){a&&b&&\"M\"==a[e][0]&&\"M\"!=b[e][0]&&(b.splice(e,0,[\"M\",d.x,d.y]),c.bx=0,c.by=0,c.x=a[e][1],c.y=a[e][2],v=W(f.length,l&&l.length||0))},q=[],u=[],c=\"\",t=\"\",x=0,v=W(f.length,\n",
       "l&&l.length||0);for(;x<v;x++){f[x]&&(c=f[x][0]);\"C\"!=c&&(q[x]=c,x&&(t=q[x-1]));f[x]=p(f[x],n,t);\"A\"!=q[x]&&\"C\"==c&&(q[x]=\"C\");s(f,x);l&&(l[x]&&(c=l[x][0]),\"C\"!=c&&(u[x]=c,x&&(t=u[x-1])),l[x]=p(l[x],k,t),\"A\"!=u[x]&&\"C\"==c&&(u[x]=\"C\"),s(l,x));r(f,l,n,k,x);r(l,f,k,n,x);var w=f[x],z=l&&l[x],y=w.length,U=l&&z.length;n.x=w[y-2];n.y=w[y-1];n.bx=$(w[y-4])||n.x;n.by=$(w[y-3])||n.y;k.bx=l&&($(z[U-4])||k.x);k.by=l&&($(z[U-3])||k.y);k.x=l&&z[U-2];k.y=l&&z[U-1]}l||(e.curve=d(f));return l?[f,l]:f}function P(a,\n",
       "b){for(var d=[],e=0,h=a.length;h-2*!b>e;e+=2){var f=[{x:+a[e-2],y:+a[e-1]},{x:+a[e],y:+a[e+1]},{x:+a[e+2],y:+a[e+3]},{x:+a[e+4],y:+a[e+5]}];b?e?h-4==e?f[3]={x:+a[0],y:+a[1]}:h-2==e&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[h-2],y:+a[h-1]}:h-4==e?f[3]=f[2]:e||(f[0]={x:+a[e],y:+a[e+1]});d.push([\"C\",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return d}y=k.prototype;var Q=a.is,C=a._.clone,L=\"hasOwnProperty\",\n",
       "N=/,?([a-z]),?/gi,$=parseFloat,F=Math,S=F.PI,X=F.min,W=F.max,ma=F.pow,Z=F.abs;M=n(1);var na=n(),ba=n(0,1),V=a._unit2px;a.path=A;a.path.getTotalLength=M;a.path.getPointAtLength=na;a.path.getSubpath=function(a,b,d){if(1E-6>this.getTotalLength(a)-d)return ba(a,b).end;a=ba(a,d,1);return b?ba(a,b).end:a};y.getTotalLength=function(){if(this.node.getTotalLength)return this.node.getTotalLength()};y.getPointAtLength=function(a){return na(this.attr(\"d\"),a)};y.getSubpath=function(b,d){return a.path.getSubpath(this.attr(\"d\"),\n",
       "b,d)};a._.box=w;a.path.findDotsAtSegment=u;a.path.bezierBBox=p;a.path.isPointInsideBBox=b;a.path.isBBoxIntersect=q;a.path.intersection=function(a,b){return l(a,b)};a.path.intersectionNumber=function(a,b){return l(a,b,1)};a.path.isPointInside=function(a,d,e){var h=r(a);return b(h,d,e)&&1==l(a,[[\"M\",d,e],[\"H\",h.x2+10] ],1)%2};a.path.getBBox=r;a.path.get={path:function(a){return a.attr(\"path\")},circle:function(a){a=V(a);return x(a.cx,a.cy,a.r)},ellipse:function(a){a=V(a);return x(a.cx||0,a.cy||0,a.rx,\n",
       "a.ry)},rect:function(a){a=V(a);return s(a.x||0,a.y||0,a.width,a.height,a.rx,a.ry)},image:function(a){a=V(a);return s(a.x||0,a.y||0,a.width,a.height)},line:function(a){return\"M\"+[a.attr(\"x1\")||0,a.attr(\"y1\")||0,a.attr(\"x2\"),a.attr(\"y2\")]},polyline:function(a){return\"M\"+a.attr(\"points\")},polygon:function(a){return\"M\"+a.attr(\"points\")+\"z\"},deflt:function(a){a=a.node.getBBox();return s(a.x,a.y,a.width,a.height)}};a.path.toRelative=function(b){var e=A(b),h=String.prototype.toLowerCase;if(e.rel)return d(e.rel);\n",
       "a.is(b,\"array\")&&a.is(b&&b[0],\"array\")||(b=a.parsePathString(b));var f=[],l=0,n=0,k=0,p=0,s=0;\"M\"==b[0][0]&&(l=b[0][1],n=b[0][2],k=l,p=n,s++,f.push([\"M\",l,n]));for(var r=b.length;s<r;s++){var q=f[s]=[],x=b[s];if(x[0]!=h.call(x[0]))switch(q[0]=h.call(x[0]),q[0]){case \"a\":q[1]=x[1];q[2]=x[2];q[3]=x[3];q[4]=x[4];q[5]=x[5];q[6]=+(x[6]-l).toFixed(3);q[7]=+(x[7]-n).toFixed(3);break;case \"v\":q[1]=+(x[1]-n).toFixed(3);break;case \"m\":k=x[1],p=x[2];default:for(var c=1,t=x.length;c<t;c++)q[c]=+(x[c]-(c%2?l:\n",
       "n)).toFixed(3)}else for(f[s]=[],\"m\"==x[0]&&(k=x[1]+l,p=x[2]+n),q=0,c=x.length;q<c;q++)f[s][q]=x[q];x=f[s].length;switch(f[s][0]){case \"z\":l=k;n=p;break;case \"h\":l+=+f[s][x-1];break;case \"v\":n+=+f[s][x-1];break;default:l+=+f[s][x-2],n+=+f[s][x-1]}}f.toString=z;e.rel=d(f);return f};a.path.toAbsolute=G;a.path.toCubic=I;a.path.map=function(a,b){if(!b)return a;var d,e,h,f,l,n,k;a=I(a);h=0;for(l=a.length;h<l;h++)for(k=a[h],f=1,n=k.length;f<n;f+=2)d=b.x(k[f],k[f+1]),e=b.y(k[f],k[f+1]),k[f]=d,k[f+1]=e;return a};\n",
       "a.path.toString=z;a.path.clone=d});C.plugin(function(a,v,y,C){var A=Math.max,w=Math.min,z=function(a){this.items=[];this.bindings={};this.length=0;this.type=\"set\";if(a)for(var f=0,n=a.length;f<n;f++)a[f]&&(this[this.items.length]=this.items[this.items.length]=a[f],this.length++)};v=z.prototype;v.push=function(){for(var a,f,n=0,k=arguments.length;n<k;n++)if(a=arguments[n])f=this.items.length,this[f]=this.items[f]=a,this.length++;return this};v.pop=function(){this.length&&delete this[this.length--];\n",
       "return this.items.pop()};v.forEach=function(a,f){for(var n=0,k=this.items.length;n<k&&!1!==a.call(f,this.items[n],n);n++);return this};v.animate=function(d,f,n,u){\"function\"!=typeof n||n.length||(u=n,n=L.linear);d instanceof a._.Animation&&(u=d.callback,n=d.easing,f=n.dur,d=d.attr);var p=arguments;if(a.is(d,\"array\")&&a.is(p[p.length-1],\"array\"))var b=!0;var q,e=function(){q?this.b=q:q=this.b},l=0,r=u&&function(){l++==this.length&&u.call(this)};return this.forEach(function(a,l){k.once(\"snap.animcreated.\"+\n",
       "a.id,e);b?p[l]&&a.animate.apply(a,p[l]):a.animate(d,f,n,r)})};v.remove=function(){for(;this.length;)this.pop().remove();return this};v.bind=function(a,f,k){var u={};if(\"function\"==typeof f)this.bindings[a]=f;else{var p=k||a;this.bindings[a]=function(a){u[p]=a;f.attr(u)}}return this};v.attr=function(a){var f={},k;for(k in a)if(this.bindings[k])this.bindings[k](a[k]);else f[k]=a[k];a=0;for(k=this.items.length;a<k;a++)this.items[a].attr(f);return this};v.clear=function(){for(;this.length;)this.pop()};\n",
       "v.splice=function(a,f,k){a=0>a?A(this.length+a,0):a;f=A(0,w(this.length-a,f));var u=[],p=[],b=[],q;for(q=2;q<arguments.length;q++)b.push(arguments[q]);for(q=0;q<f;q++)p.push(this[a+q]);for(;q<this.length-a;q++)u.push(this[a+q]);var e=b.length;for(q=0;q<e+u.length;q++)this.items[a+q]=this[a+q]=q<e?b[q]:u[q-e];for(q=this.items.length=this.length-=f-e;this[q];)delete this[q++];return new z(p)};v.exclude=function(a){for(var f=0,k=this.length;f<k;f++)if(this[f]==a)return this.splice(f,1),!0;return!1};\n",
       "v.insertAfter=function(a){for(var f=this.items.length;f--;)this.items[f].insertAfter(a);return this};v.getBBox=function(){for(var a=[],f=[],k=[],u=[],p=this.items.length;p--;)if(!this.items[p].removed){var b=this.items[p].getBBox();a.push(b.x);f.push(b.y);k.push(b.x+b.width);u.push(b.y+b.height)}a=w.apply(0,a);f=w.apply(0,f);k=A.apply(0,k);u=A.apply(0,u);return{x:a,y:f,x2:k,y2:u,width:k-a,height:u-f,cx:a+(k-a)/2,cy:f+(u-f)/2}};v.clone=function(a){a=new z;for(var f=0,k=this.items.length;f<k;f++)a.push(this.items[f].clone());\n",
       "return a};v.toString=function(){return\"Snap\\u2018s set\"};v.type=\"set\";a.set=function(){var a=new z;arguments.length&&a.push.apply(a,Array.prototype.slice.call(arguments,0));return a}});C.plugin(function(a,v,y,C){function A(a){var b=a[0];switch(b.toLowerCase()){case \"t\":return[b,0,0];case \"m\":return[b,1,0,0,1,0,0];case \"r\":return 4==a.length?[b,0,a[2],a[3] ]:[b,0];case \"s\":return 5==a.length?[b,1,1,a[3],a[4] ]:3==a.length?[b,1,1]:[b,1]}}function w(b,d,f){d=q(d).replace(/\\.{3}|\\u2026/g,b);b=a.parseTransformString(b)||\n",
       "[];d=a.parseTransformString(d)||[];for(var k=Math.max(b.length,d.length),p=[],v=[],h=0,w,z,y,I;h<k;h++){y=b[h]||A(d[h]);I=d[h]||A(y);if(y[0]!=I[0]||\"r\"==y[0].toLowerCase()&&(y[2]!=I[2]||y[3]!=I[3])||\"s\"==y[0].toLowerCase()&&(y[3]!=I[3]||y[4]!=I[4])){b=a._.transform2matrix(b,f());d=a._.transform2matrix(d,f());p=[[\"m\",b.a,b.b,b.c,b.d,b.e,b.f] ];v=[[\"m\",d.a,d.b,d.c,d.d,d.e,d.f] ];break}p[h]=[];v[h]=[];w=0;for(z=Math.max(y.length,I.length);w<z;w++)w in y&&(p[h][w]=y[w]),w in I&&(v[h][w]=I[w])}return{from:u(p),\n",
       "to:u(v),f:n(p)}}function z(a){return a}function d(a){return function(b){return+b.toFixed(3)+a}}function f(b){return a.rgb(b[0],b[1],b[2])}function n(a){var b=0,d,f,k,n,h,p,q=[];d=0;for(f=a.length;d<f;d++){h=\"[\";p=['\"'+a[d][0]+'\"'];k=1;for(n=a[d].length;k<n;k++)p[k]=\"val[\"+b++ +\"]\";h+=p+\"]\";q[d]=h}return Function(\"val\",\"return Snap.path.toString.call([\"+q+\"])\")}function u(a){for(var b=[],d=0,f=a.length;d<f;d++)for(var k=1,n=a[d].length;k<n;k++)b.push(a[d][k]);return b}var p={},b=/[a-z]+$/i,q=String;\n",
       "p.stroke=p.fill=\"colour\";v.prototype.equal=function(a,b){return k(\"snap.util.equal\",this,a,b).firstDefined()};k.on(\"snap.util.equal\",function(e,k){var r,s;r=q(this.attr(e)||\"\");var x=this;if(r==+r&&k==+k)return{from:+r,to:+k,f:z};if(\"colour\"==p[e])return r=a.color(r),s=a.color(k),{from:[r.r,r.g,r.b,r.opacity],to:[s.r,s.g,s.b,s.opacity],f:f};if(\"transform\"==e||\"gradientTransform\"==e||\"patternTransform\"==e)return k instanceof a.Matrix&&(k=k.toTransformString()),a._.rgTransform.test(k)||(k=a._.svgTransform2string(k)),\n",
       "w(r,k,function(){return x.getBBox(1)});if(\"d\"==e||\"path\"==e)return r=a.path.toCubic(r,k),{from:u(r[0]),to:u(r[1]),f:n(r[0])};if(\"points\"==e)return r=q(r).split(a._.separator),s=q(k).split(a._.separator),{from:r,to:s,f:function(a){return a}};aUnit=r.match(b);s=q(k).match(b);return aUnit&&aUnit==s?{from:parseFloat(r),to:parseFloat(k),f:d(aUnit)}:{from:this.asPX(e),to:this.asPX(e,k),f:z}})});C.plugin(function(a,v,y,C){var A=v.prototype,w=\"createTouch\"in C.doc;v=\"click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel\".split(\" \");\n",
       "var z={mousedown:\"touchstart\",mousemove:\"touchmove\",mouseup:\"touchend\"},d=function(a,b){var d=\"y\"==a?\"scrollTop\":\"scrollLeft\",e=b&&b.node?b.node.ownerDocument:C.doc;return e[d in e.documentElement?\"documentElement\":\"body\"][d]},f=function(){this.returnValue=!1},n=function(){return this.originalEvent.preventDefault()},u=function(){this.cancelBubble=!0},p=function(){return this.originalEvent.stopPropagation()},b=function(){if(C.doc.addEventListener)return function(a,b,e,f){var k=w&&z[b]?z[b]:b,l=function(k){var l=\n",
       "d(\"y\",f),q=d(\"x\",f);if(w&&z.hasOwnProperty(b))for(var r=0,u=k.targetTouches&&k.targetTouches.length;r<u;r++)if(k.targetTouches[r].target==a||a.contains(k.targetTouches[r].target)){u=k;k=k.targetTouches[r];k.originalEvent=u;k.preventDefault=n;k.stopPropagation=p;break}return e.call(f,k,k.clientX+q,k.clientY+l)};b!==k&&a.addEventListener(b,l,!1);a.addEventListener(k,l,!1);return function(){b!==k&&a.removeEventListener(b,l,!1);a.removeEventListener(k,l,!1);return!0}};if(C.doc.attachEvent)return function(a,\n",
       "b,e,h){var k=function(a){a=a||h.node.ownerDocument.window.event;var b=d(\"y\",h),k=d(\"x\",h),k=a.clientX+k,b=a.clientY+b;a.preventDefault=a.preventDefault||f;a.stopPropagation=a.stopPropagation||u;return e.call(h,a,k,b)};a.attachEvent(\"on\"+b,k);return function(){a.detachEvent(\"on\"+b,k);return!0}}}(),q=[],e=function(a){for(var b=a.clientX,e=a.clientY,f=d(\"y\"),l=d(\"x\"),n,p=q.length;p--;){n=q[p];if(w)for(var r=a.touches&&a.touches.length,u;r--;){if(u=a.touches[r],u.identifier==n.el._drag.id||n.el.node.contains(u.target)){b=\n",
       "u.clientX;e=u.clientY;(a.originalEvent?a.originalEvent:a).preventDefault();break}}else a.preventDefault();b+=l;e+=f;k(\"snap.drag.move.\"+n.el.id,n.move_scope||n.el,b-n.el._drag.x,e-n.el._drag.y,b,e,a)}},l=function(b){a.unmousemove(e).unmouseup(l);for(var d=q.length,f;d--;)f=q[d],f.el._drag={},k(\"snap.drag.end.\"+f.el.id,f.end_scope||f.start_scope||f.move_scope||f.el,b);q=[]};for(y=v.length;y--;)(function(d){a[d]=A[d]=function(e,f){a.is(e,\"function\")&&(this.events=this.events||[],this.events.push({name:d,\n",
       "f:e,unbind:b(this.node||document,d,e,f||this)}));return this};a[\"un\"+d]=A[\"un\"+d]=function(a){for(var b=this.events||[],e=b.length;e--;)if(b[e].name==d&&(b[e].f==a||!a)){b[e].unbind();b.splice(e,1);!b.length&&delete this.events;break}return this}})(v[y]);A.hover=function(a,b,d,e){return this.mouseover(a,d).mouseout(b,e||d)};A.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var r=[];A.drag=function(b,d,f,h,n,p){function u(r,v,w){(r.originalEvent||r).preventDefault();this._drag.x=v;\n",
       "this._drag.y=w;this._drag.id=r.identifier;!q.length&&a.mousemove(e).mouseup(l);q.push({el:this,move_scope:h,start_scope:n,end_scope:p});d&&k.on(\"snap.drag.start.\"+this.id,d);b&&k.on(\"snap.drag.move.\"+this.id,b);f&&k.on(\"snap.drag.end.\"+this.id,f);k(\"snap.drag.start.\"+this.id,n||h||this,v,w,r)}if(!arguments.length){var v;return this.drag(function(a,b){this.attr({transform:v+(v?\"T\":\"t\")+[a,b]})},function(){v=this.transform().local})}this._drag={};r.push({el:this,start:u});this.mousedown(u);return this};\n",
       "A.undrag=function(){for(var b=r.length;b--;)r[b].el==this&&(this.unmousedown(r[b].start),r.splice(b,1),k.unbind(\"snap.drag.*.\"+this.id));!r.length&&a.unmousemove(e).unmouseup(l);return this}});C.plugin(function(a,v,y,C){y=y.prototype;var A=/^\\s*url\\((.+)\\)/,w=String,z=a._.$;a.filter={};y.filter=function(d){var f=this;\"svg\"!=f.type&&(f=f.paper);d=a.parse(w(d));var k=a._.id(),u=z(\"filter\");z(u,{id:k,filterUnits:\"userSpaceOnUse\"});u.appendChild(d.node);f.defs.appendChild(u);return new v(u)};k.on(\"snap.util.getattr.filter\",\n",
       "function(){k.stop();var d=z(this.node,\"filter\");if(d)return(d=w(d).match(A))&&a.select(d[1])});k.on(\"snap.util.attr.filter\",function(d){if(d instanceof v&&\"filter\"==d.type){k.stop();var f=d.node.id;f||(z(d.node,{id:d.id}),f=d.id);z(this.node,{filter:a.url(f)})}d&&\"none\"!=d||(k.stop(),this.node.removeAttribute(\"filter\"))});a.filter.blur=function(d,f){null==d&&(d=2);return a.format('<feGaussianBlur stdDeviation=\"{def}\"/>',{def:null==f?d:[d,f]})};a.filter.blur.toString=function(){return this()};a.filter.shadow=\n",
       "function(d,f,k,u,p){\"string\"==typeof k&&(p=u=k,k=4);\"string\"!=typeof u&&(p=u,u=\"#000\");null==k&&(k=4);null==p&&(p=1);null==d&&(d=0,f=2);null==f&&(f=d);u=a.color(u||\"#000\");return a.format('<feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"{blur}\"/><feOffset dx=\"{dx}\" dy=\"{dy}\" result=\"offsetblur\"/><feFlood flood-color=\"{color}\"/><feComposite in2=\"offsetblur\" operator=\"in\"/><feComponentTransfer><feFuncA type=\"linear\" slope=\"{opacity}\"/></feComponentTransfer><feMerge><feMergeNode/><feMergeNode in=\"SourceGraphic\"/></feMerge>',\n",
       "{color:u,dx:d,dy:f,blur:k,opacity:p})};a.filter.shadow.toString=function(){return this()};a.filter.grayscale=function(d){null==d&&(d=1);return a.format('<feColorMatrix type=\"matrix\" values=\"{a} {b} {c} 0 0 {d} {e} {f} 0 0 {g} {b} {h} 0 0 0 0 0 1 0\"/>',{a:0.2126+0.7874*(1-d),b:0.7152-0.7152*(1-d),c:0.0722-0.0722*(1-d),d:0.2126-0.2126*(1-d),e:0.7152+0.2848*(1-d),f:0.0722-0.0722*(1-d),g:0.2126-0.2126*(1-d),h:0.0722+0.9278*(1-d)})};a.filter.grayscale.toString=function(){return this()};a.filter.sepia=\n",
       "function(d){null==d&&(d=1);return a.format('<feColorMatrix type=\"matrix\" values=\"{a} {b} {c} 0 0 {d} {e} {f} 0 0 {g} {h} {i} 0 0 0 0 0 1 0\"/>',{a:0.393+0.607*(1-d),b:0.769-0.769*(1-d),c:0.189-0.189*(1-d),d:0.349-0.349*(1-d),e:0.686+0.314*(1-d),f:0.168-0.168*(1-d),g:0.272-0.272*(1-d),h:0.534-0.534*(1-d),i:0.131+0.869*(1-d)})};a.filter.sepia.toString=function(){return this()};a.filter.saturate=function(d){null==d&&(d=1);return a.format('<feColorMatrix type=\"saturate\" values=\"{amount}\"/>',{amount:1-\n",
       "d})};a.filter.saturate.toString=function(){return this()};a.filter.hueRotate=function(d){return a.format('<feColorMatrix type=\"hueRotate\" values=\"{angle}\"/>',{angle:d||0})};a.filter.hueRotate.toString=function(){return this()};a.filter.invert=function(d){null==d&&(d=1);return a.format('<feComponentTransfer><feFuncR type=\"table\" tableValues=\"{amount} {amount2}\"/><feFuncG type=\"table\" tableValues=\"{amount} {amount2}\"/><feFuncB type=\"table\" tableValues=\"{amount} {amount2}\"/></feComponentTransfer>',{amount:d,\n",
       "amount2:1-d})};a.filter.invert.toString=function(){return this()};a.filter.brightness=function(d){null==d&&(d=1);return a.format('<feComponentTransfer><feFuncR type=\"linear\" slope=\"{amount}\"/><feFuncG type=\"linear\" slope=\"{amount}\"/><feFuncB type=\"linear\" slope=\"{amount}\"/></feComponentTransfer>',{amount:d})};a.filter.brightness.toString=function(){return this()};a.filter.contrast=function(d){null==d&&(d=1);return a.format('<feComponentTransfer><feFuncR type=\"linear\" slope=\"{amount}\" intercept=\"{amount2}\"/><feFuncG type=\"linear\" slope=\"{amount}\" intercept=\"{amount2}\"/><feFuncB type=\"linear\" slope=\"{amount}\" intercept=\"{amount2}\"/></feComponentTransfer>',\n",
       "{amount:d,amount2:0.5-d/2})};a.filter.contrast.toString=function(){return this()}});return C});\n",
       "\n",
       "]]> </script>\n",
       "<script> <![CDATA[\n",
       "\n",
       "(function (glob, factory) {\n",
       "    // AMD support\n",
       "    if (typeof define === \"function\" && define.amd) {\n",
       "        // Define as an anonymous module\n",
       "        define(\"Gadfly\", [\"Snap.svg\"], function (Snap) {\n",
       "            return factory(Snap);\n",
       "        });\n",
       "    } else {\n",
       "        // Browser globals (glob is window)\n",
       "        // Snap adds itself to window\n",
       "        glob.Gadfly = factory(glob.Snap);\n",
       "    }\n",
       "}(this, function (Snap) {\n",
       "\n",
       "var Gadfly = {};\n",
       "\n",
       "// Get an x/y coordinate value in pixels\n",
       "var xPX = function(fig, x) {\n",
       "    var client_box = fig.node.getBoundingClientRect();\n",
       "    return x * fig.node.viewBox.baseVal.width / client_box.width;\n",
       "};\n",
       "\n",
       "var yPX = function(fig, y) {\n",
       "    var client_box = fig.node.getBoundingClientRect();\n",
       "    return y * fig.node.viewBox.baseVal.height / client_box.height;\n",
       "};\n",
       "\n",
       "\n",
       "Snap.plugin(function (Snap, Element, Paper, global) {\n",
       "    // Traverse upwards from a snap element to find and return the first\n",
       "    // note with the \"plotroot\" class.\n",
       "    Element.prototype.plotroot = function () {\n",
       "        var element = this;\n",
       "        while (!element.hasClass(\"plotroot\") && element.parent() != null) {\n",
       "            element = element.parent();\n",
       "        }\n",
       "        return element;\n",
       "    };\n",
       "\n",
       "    Element.prototype.svgroot = function () {\n",
       "        var element = this;\n",
       "        while (element.node.nodeName != \"svg\" && element.parent() != null) {\n",
       "            element = element.parent();\n",
       "        }\n",
       "        return element;\n",
       "    };\n",
       "\n",
       "    Element.prototype.plotbounds = function () {\n",
       "        var root = this.plotroot()\n",
       "        var bbox = root.select(\".guide.background\").node.getBBox();\n",
       "        return {\n",
       "            x0: bbox.x,\n",
       "            x1: bbox.x + bbox.width,\n",
       "            y0: bbox.y,\n",
       "            y1: bbox.y + bbox.height\n",
       "        };\n",
       "    };\n",
       "\n",
       "    Element.prototype.plotcenter = function () {\n",
       "        var root = this.plotroot()\n",
       "        var bbox = root.select(\".guide.background\").node.getBBox();\n",
       "        return {\n",
       "            x: bbox.x + bbox.width / 2,\n",
       "            y: bbox.y + bbox.height / 2\n",
       "        };\n",
       "    };\n",
       "\n",
       "    // Emulate IE style mouseenter/mouseleave events, since Microsoft always\n",
       "    // does everything right.\n",
       "    // See: http://www.dynamic-tools.net/toolbox/isMouseLeaveOrEnter/\n",
       "    var events = [\"mouseenter\", \"mouseleave\"];\n",
       "\n",
       "    for (i in events) {\n",
       "        (function (event_name) {\n",
       "            var event_name = events[i];\n",
       "            Element.prototype[event_name] = function (fn, scope) {\n",
       "                if (Snap.is(fn, \"function\")) {\n",
       "                    var fn2 = function (event) {\n",
       "                        if (event.type != \"mouseover\" && event.type != \"mouseout\") {\n",
       "                            return;\n",
       "                        }\n",
       "\n",
       "                        var reltg = event.relatedTarget ? event.relatedTarget :\n",
       "                            event.type == \"mouseout\" ? event.toElement : event.fromElement;\n",
       "                        while (reltg && reltg != this.node) reltg = reltg.parentNode;\n",
       "\n",
       "                        if (reltg != this.node) {\n",
       "                            return fn.apply(this, event);\n",
       "                        }\n",
       "                    };\n",
       "\n",
       "                    if (event_name == \"mouseenter\") {\n",
       "                        this.mouseover(fn2, scope);\n",
       "                    } else {\n",
       "                        this.mouseout(fn2, scope);\n",
       "                    }\n",
       "                }\n",
       "                return this;\n",
       "            };\n",
       "        })(events[i]);\n",
       "    }\n",
       "\n",
       "\n",
       "    Element.prototype.mousewheel = function (fn, scope) {\n",
       "        if (Snap.is(fn, \"function\")) {\n",
       "            var el = this;\n",
       "            var fn2 = function (event) {\n",
       "                fn.apply(el, [event]);\n",
       "            };\n",
       "        }\n",
       "\n",
       "        this.node.addEventListener(\n",
       "            /Firefox/i.test(navigator.userAgent) ? \"DOMMouseScroll\" : \"mousewheel\",\n",
       "            fn2);\n",
       "\n",
       "        return this;\n",
       "    };\n",
       "\n",
       "\n",
       "    // Snap's attr function can be too slow for things like panning/zooming.\n",
       "    // This is a function to directly update element attributes without going\n",
       "    // through eve.\n",
       "    Element.prototype.attribute = function(key, val) {\n",
       "        if (val === undefined) {\n",
       "            return this.node.getAttribute(key);\n",
       "        } else {\n",
       "            this.node.setAttribute(key, val);\n",
       "            return this;\n",
       "        }\n",
       "    };\n",
       "\n",
       "    Element.prototype.init_gadfly = function() {\n",
       "        this.mouseenter(Gadfly.plot_mouseover)\n",
       "            .mouseleave(Gadfly.plot_mouseout)\n",
       "            .dblclick(Gadfly.plot_dblclick)\n",
       "            .mousewheel(Gadfly.guide_background_scroll)\n",
       "            .drag(Gadfly.guide_background_drag_onmove,\n",
       "                  Gadfly.guide_background_drag_onstart,\n",
       "                  Gadfly.guide_background_drag_onend);\n",
       "        this.mouseenter(function (event) {\n",
       "            init_pan_zoom(this.plotroot());\n",
       "        });\n",
       "        return this;\n",
       "    };\n",
       "});\n",
       "\n",
       "\n",
       "// When the plot is moused over, emphasize the grid lines.\n",
       "Gadfly.plot_mouseover = function(event) {\n",
       "    var root = this.plotroot();\n",
       "\n",
       "    var keyboard_zoom = function(event) {\n",
       "        if (event.which == 187) { // plus\n",
       "            increase_zoom_by_position(root, 0.1, true);\n",
       "        } else if (event.which == 189) { // minus\n",
       "            increase_zoom_by_position(root, -0.1, true);\n",
       "        }\n",
       "    };\n",
       "    root.data(\"keyboard_zoom\", keyboard_zoom);\n",
       "    window.addEventListener(\"keyup\", keyboard_zoom);\n",
       "\n",
       "    var xgridlines = root.select(\".xgridlines\"),\n",
       "        ygridlines = root.select(\".ygridlines\");\n",
       "\n",
       "    xgridlines.data(\"unfocused_strokedash\",\n",
       "                    xgridlines.attribute(\"stroke-dasharray\").replace(/(\\d)(,|$)/g, \"$1mm$2\"));\n",
       "    ygridlines.data(\"unfocused_strokedash\",\n",
       "                    ygridlines.attribute(\"stroke-dasharray\").replace(/(\\d)(,|$)/g, \"$1mm$2\"));\n",
       "\n",
       "    // emphasize grid lines\n",
       "    var destcolor = root.data(\"focused_xgrid_color\");\n",
       "    xgridlines.attribute(\"stroke-dasharray\", \"none\")\n",
       "              .selectAll(\"path\")\n",
       "              .animate({stroke: destcolor}, 250);\n",
       "\n",
       "    destcolor = root.data(\"focused_ygrid_color\");\n",
       "    ygridlines.attribute(\"stroke-dasharray\", \"none\")\n",
       "              .selectAll(\"path\")\n",
       "              .animate({stroke: destcolor}, 250);\n",
       "\n",
       "    // reveal zoom slider\n",
       "    root.select(\".zoomslider\")\n",
       "        .animate({opacity: 1.0}, 250);\n",
       "};\n",
       "\n",
       "// Reset pan and zoom on double click\n",
       "Gadfly.plot_dblclick = function(event) {\n",
       "  set_plot_pan_zoom(this.plotroot(), 0.0, 0.0, 1.0);\n",
       "};\n",
       "\n",
       "// Unemphasize grid lines on mouse out.\n",
       "Gadfly.plot_mouseout = function(event) {\n",
       "    var root = this.plotroot();\n",
       "\n",
       "    window.removeEventListener(\"keyup\", root.data(\"keyboard_zoom\"));\n",
       "    root.data(\"keyboard_zoom\", undefined);\n",
       "\n",
       "    var xgridlines = root.select(\".xgridlines\"),\n",
       "        ygridlines = root.select(\".ygridlines\");\n",
       "\n",
       "    var destcolor = root.data(\"unfocused_xgrid_color\");\n",
       "\n",
       "    xgridlines.attribute(\"stroke-dasharray\", xgridlines.data(\"unfocused_strokedash\"))\n",
       "              .selectAll(\"path\")\n",
       "              .animate({stroke: destcolor}, 250);\n",
       "\n",
       "    destcolor = root.data(\"unfocused_ygrid_color\");\n",
       "    ygridlines.attribute(\"stroke-dasharray\", ygridlines.data(\"unfocused_strokedash\"))\n",
       "              .selectAll(\"path\")\n",
       "              .animate({stroke: destcolor}, 250);\n",
       "\n",
       "    // hide zoom slider\n",
       "    root.select(\".zoomslider\")\n",
       "        .animate({opacity: 0.0}, 250);\n",
       "};\n",
       "\n",
       "\n",
       "var set_geometry_transform = function(root, tx, ty, scale) {\n",
       "    var xscalable = root.hasClass(\"xscalable\"),\n",
       "        yscalable = root.hasClass(\"yscalable\");\n",
       "\n",
       "    var old_scale = root.data(\"scale\");\n",
       "\n",
       "    var xscale = xscalable ? scale : 1.0,\n",
       "        yscale = yscalable ? scale : 1.0;\n",
       "\n",
       "    tx = xscalable ? tx : 0.0;\n",
       "    ty = yscalable ? ty : 0.0;\n",
       "\n",
       "    var t = new Snap.Matrix().translate(tx, ty).scale(xscale, yscale);\n",
       "\n",
       "    root.selectAll(\".geometry, image\")\n",
       "        .forEach(function (element, i) {\n",
       "            element.transform(t);\n",
       "        });\n",
       "\n",
       "    bounds = root.plotbounds();\n",
       "\n",
       "    if (yscalable) {\n",
       "        var xfixed_t = new Snap.Matrix().translate(0, ty).scale(1.0, yscale);\n",
       "        root.selectAll(\".xfixed\")\n",
       "            .forEach(function (element, i) {\n",
       "                element.transform(xfixed_t);\n",
       "            });\n",
       "\n",
       "        root.select(\".ylabels\")\n",
       "            .transform(xfixed_t)\n",
       "            .selectAll(\"text\")\n",
       "            .forEach(function (element, i) {\n",
       "                if (element.attribute(\"gadfly:inscale\") == \"true\") {\n",
       "                    var cx = element.asPX(\"x\"),\n",
       "                        cy = element.asPX(\"y\");\n",
       "                    var st = element.data(\"static_transform\");\n",
       "                    unscale_t = new Snap.Matrix();\n",
       "                    unscale_t.scale(1, 1/scale, cx, cy).add(st);\n",
       "                    element.transform(unscale_t);\n",
       "\n",
       "                    var y = cy * scale + ty;\n",
       "                    element.attr(\"visibility\",\n",
       "                        bounds.y0 <= y && y <= bounds.y1 ? \"visible\" : \"hidden\");\n",
       "                }\n",
       "            });\n",
       "    }\n",
       "\n",
       "    if (xscalable) {\n",
       "        var yfixed_t = new Snap.Matrix().translate(tx, 0).scale(xscale, 1.0);\n",
       "        var xtrans = new Snap.Matrix().translate(tx, 0);\n",
       "        root.selectAll(\".yfixed\")\n",
       "            .forEach(function (element, i) {\n",
       "                element.transform(yfixed_t);\n",
       "            });\n",
       "\n",
       "        root.select(\".xlabels\")\n",
       "            .transform(yfixed_t)\n",
       "            .selectAll(\"text\")\n",
       "            .forEach(function (element, i) {\n",
       "                if (element.attribute(\"gadfly:inscale\") == \"true\") {\n",
       "                    var cx = element.asPX(\"x\"),\n",
       "                        cy = element.asPX(\"y\");\n",
       "                    var st = element.data(\"static_transform\");\n",
       "                    unscale_t = new Snap.Matrix();\n",
       "                    unscale_t.scale(1/scale, 1, cx, cy).add(st);\n",
       "\n",
       "                    element.transform(unscale_t);\n",
       "\n",
       "                    var x = cx * scale + tx;\n",
       "                    element.attr(\"visibility\",\n",
       "                        bounds.x0 <= x && x <= bounds.x1 ? \"visible\" : \"hidden\");\n",
       "                    }\n",
       "            });\n",
       "    }\n",
       "\n",
       "    // we must unscale anything that is scale invariance: widths, raiduses, etc.\n",
       "    var size_attribs = [\"font-size\"];\n",
       "    var unscaled_selection = \".geometry, .geometry *\";\n",
       "    if (xscalable) {\n",
       "        size_attribs.push(\"rx\");\n",
       "        unscaled_selection += \", .xgridlines\";\n",
       "    }\n",
       "    if (yscalable) {\n",
       "        size_attribs.push(\"ry\");\n",
       "        unscaled_selection += \", .ygridlines\";\n",
       "    }\n",
       "\n",
       "    root.selectAll(unscaled_selection)\n",
       "        .forEach(function (element, i) {\n",
       "            // circle need special help\n",
       "            if (element.node.nodeName == \"circle\") {\n",
       "                var cx = element.attribute(\"cx\"),\n",
       "                    cy = element.attribute(\"cy\");\n",
       "                unscale_t = new Snap.Matrix().scale(1/xscale, 1/yscale,\n",
       "                                                        cx, cy);\n",
       "                element.transform(unscale_t);\n",
       "                return;\n",
       "            }\n",
       "\n",
       "            for (i in size_attribs) {\n",
       "                var key = size_attribs[i];\n",
       "                var val = parseFloat(element.attribute(key));\n",
       "                if (val !== undefined && val != 0 && !isNaN(val)) {\n",
       "                    element.attribute(key, val * old_scale / scale);\n",
       "                }\n",
       "            }\n",
       "        });\n",
       "};\n",
       "\n",
       "\n",
       "// Find the most appropriate tick scale and update label visibility.\n",
       "var update_tickscale = function(root, scale, axis) {\n",
       "    if (!root.hasClass(axis + \"scalable\")) return;\n",
       "\n",
       "    var tickscales = root.data(axis + \"tickscales\");\n",
       "    var best_tickscale = 1.0;\n",
       "    var best_tickscale_dist = Infinity;\n",
       "    for (tickscale in tickscales) {\n",
       "        var dist = Math.abs(Math.log(tickscale) - Math.log(scale));\n",
       "        if (dist < best_tickscale_dist) {\n",
       "            best_tickscale_dist = dist;\n",
       "            best_tickscale = tickscale;\n",
       "        }\n",
       "    }\n",
       "\n",
       "    if (best_tickscale != root.data(axis + \"tickscale\")) {\n",
       "        root.data(axis + \"tickscale\", best_tickscale);\n",
       "        var mark_inscale_gridlines = function (element, i) {\n",
       "            var inscale = element.attr(\"gadfly:scale\") == best_tickscale;\n",
       "            element.attribute(\"gadfly:inscale\", inscale);\n",
       "            element.attr(\"visibility\", inscale ? \"visible\" : \"hidden\");\n",
       "        };\n",
       "\n",
       "        var mark_inscale_labels = function (element, i) {\n",
       "            var inscale = element.attr(\"gadfly:scale\") == best_tickscale;\n",
       "            element.attribute(\"gadfly:inscale\", inscale);\n",
       "            element.attr(\"visibility\", inscale ? \"visible\" : \"hidden\");\n",
       "        };\n",
       "\n",
       "        root.select(\".\" + axis + \"gridlines\").selectAll(\"path\").forEach(mark_inscale_gridlines);\n",
       "        root.select(\".\" + axis + \"labels\").selectAll(\"text\").forEach(mark_inscale_labels);\n",
       "    }\n",
       "};\n",
       "\n",
       "\n",
       "var set_plot_pan_zoom = function(root, tx, ty, scale) {\n",
       "    var old_scale = root.data(\"scale\");\n",
       "    var bounds = root.plotbounds();\n",
       "\n",
       "    var width = bounds.x1 - bounds.x0,\n",
       "        height = bounds.y1 - bounds.y0;\n",
       "\n",
       "    // compute the viewport derived from tx, ty, and scale\n",
       "    var x_min = -width * scale - (scale * width - width),\n",
       "        x_max = width * scale,\n",
       "        y_min = -height * scale - (scale * height - height),\n",
       "        y_max = height * scale;\n",
       "\n",
       "    var x0 = bounds.x0 - scale * bounds.x0,\n",
       "        y0 = bounds.y0 - scale * bounds.y0;\n",
       "\n",
       "    var tx = Math.max(Math.min(tx - x0, x_max), x_min),\n",
       "        ty = Math.max(Math.min(ty - y0, y_max), y_min);\n",
       "\n",
       "    tx += x0;\n",
       "    ty += y0;\n",
       "\n",
       "    // when the scale change, we may need to alter which set of\n",
       "    // ticks is being displayed\n",
       "    if (scale != old_scale) {\n",
       "        update_tickscale(root, scale, \"x\");\n",
       "        update_tickscale(root, scale, \"y\");\n",
       "    }\n",
       "\n",
       "    set_geometry_transform(root, tx, ty, scale);\n",
       "\n",
       "    root.data(\"scale\", scale);\n",
       "    root.data(\"tx\", tx);\n",
       "    root.data(\"ty\", ty);\n",
       "};\n",
       "\n",
       "\n",
       "var scale_centered_translation = function(root, scale) {\n",
       "    var bounds = root.plotbounds();\n",
       "\n",
       "    var width = bounds.x1 - bounds.x0,\n",
       "        height = bounds.y1 - bounds.y0;\n",
       "\n",
       "    var tx0 = root.data(\"tx\"),\n",
       "        ty0 = root.data(\"ty\");\n",
       "\n",
       "    var scale0 = root.data(\"scale\");\n",
       "\n",
       "    // how off from center the current view is\n",
       "    var xoff = tx0 - (bounds.x0 * (1 - scale0) + (width * (1 - scale0)) / 2),\n",
       "        yoff = ty0 - (bounds.y0 * (1 - scale0) + (height * (1 - scale0)) / 2);\n",
       "\n",
       "    // rescale offsets\n",
       "    xoff = xoff * scale / scale0;\n",
       "    yoff = yoff * scale / scale0;\n",
       "\n",
       "    // adjust for the panel position being scaled\n",
       "    var x_edge_adjust = bounds.x0 * (1 - scale),\n",
       "        y_edge_adjust = bounds.y0 * (1 - scale);\n",
       "\n",
       "    return {\n",
       "        x: xoff + x_edge_adjust + (width - width * scale) / 2,\n",
       "        y: yoff + y_edge_adjust + (height - height * scale) / 2\n",
       "    };\n",
       "};\n",
       "\n",
       "\n",
       "// Initialize data for panning zooming if it isn't already.\n",
       "var init_pan_zoom = function(root) {\n",
       "    if (root.data(\"zoompan-ready\")) {\n",
       "        return;\n",
       "    }\n",
       "\n",
       "    // The non-scaling-stroke trick. Rather than try to correct for the\n",
       "    // stroke-width when zooming, we force it to a fixed value.\n",
       "    var px_per_mm = root.node.getCTM().a;\n",
       "\n",
       "    // Drag events report deltas in pixels, which we'd like to convert to\n",
       "    // millimeters.\n",
       "    root.data(\"px_per_mm\", px_per_mm);\n",
       "\n",
       "    root.selectAll(\"path\")\n",
       "        .forEach(function (element, i) {\n",
       "        sw = element.asPX(\"stroke-width\") * px_per_mm;\n",
       "        if (sw > 0) {\n",
       "            element.attribute(\"stroke-width\", sw);\n",
       "            element.attribute(\"vector-effect\", \"non-scaling-stroke\");\n",
       "        }\n",
       "    });\n",
       "\n",
       "    // Store ticks labels original tranformation\n",
       "    root.selectAll(\".xlabels > text, .ylabels > text\")\n",
       "        .forEach(function (element, i) {\n",
       "            var lm = element.transform().localMatrix;\n",
       "            element.data(\"static_transform\",\n",
       "                new Snap.Matrix(lm.a, lm.b, lm.c, lm.d, lm.e, lm.f));\n",
       "        });\n",
       "\n",
       "    var xgridlines = root.select(\".xgridlines\");\n",
       "    var ygridlines = root.select(\".ygridlines\");\n",
       "    var xlabels = root.select(\".xlabels\");\n",
       "    var ylabels = root.select(\".ylabels\");\n",
       "\n",
       "    if (root.data(\"tx\") === undefined) root.data(\"tx\", 0);\n",
       "    if (root.data(\"ty\") === undefined) root.data(\"ty\", 0);\n",
       "    if (root.data(\"scale\") === undefined) root.data(\"scale\", 1.0);\n",
       "    if (root.data(\"xtickscales\") === undefined) {\n",
       "\n",
       "        // index all the tick scales that are listed\n",
       "        var xtickscales = {};\n",
       "        var ytickscales = {};\n",
       "        var add_x_tick_scales = function (element, i) {\n",
       "            xtickscales[element.attribute(\"gadfly:scale\")] = true;\n",
       "        };\n",
       "        var add_y_tick_scales = function (element, i) {\n",
       "            ytickscales[element.attribute(\"gadfly:scale\")] = true;\n",
       "        };\n",
       "\n",
       "        if (xgridlines) xgridlines.selectAll(\"path\").forEach(add_x_tick_scales);\n",
       "        if (ygridlines) ygridlines.selectAll(\"path\").forEach(add_y_tick_scales);\n",
       "        if (xlabels) xlabels.selectAll(\"text\").forEach(add_x_tick_scales);\n",
       "        if (ylabels) ylabels.selectAll(\"text\").forEach(add_y_tick_scales);\n",
       "\n",
       "        root.data(\"xtickscales\", xtickscales);\n",
       "        root.data(\"ytickscales\", ytickscales);\n",
       "        root.data(\"xtickscale\", 1.0);\n",
       "    }\n",
       "\n",
       "    var min_scale = 1.0, max_scale = 1.0;\n",
       "    for (scale in xtickscales) {\n",
       "        min_scale = Math.min(min_scale, scale);\n",
       "        max_scale = Math.max(max_scale, scale);\n",
       "    }\n",
       "    for (scale in ytickscales) {\n",
       "        min_scale = Math.min(min_scale, scale);\n",
       "        max_scale = Math.max(max_scale, scale);\n",
       "    }\n",
       "    root.data(\"min_scale\", min_scale);\n",
       "    root.data(\"max_scale\", max_scale);\n",
       "\n",
       "    // store the original positions of labels\n",
       "    if (xlabels) {\n",
       "        xlabels.selectAll(\"text\")\n",
       "               .forEach(function (element, i) {\n",
       "                   element.data(\"x\", element.asPX(\"x\"));\n",
       "               });\n",
       "    }\n",
       "\n",
       "    if (ylabels) {\n",
       "        ylabels.selectAll(\"text\")\n",
       "               .forEach(function (element, i) {\n",
       "                   element.data(\"y\", element.asPX(\"y\"));\n",
       "               });\n",
       "    }\n",
       "\n",
       "    // mark grid lines and ticks as in or out of scale.\n",
       "    var mark_inscale = function (element, i) {\n",
       "        element.attribute(\"gadfly:inscale\", element.attribute(\"gadfly:scale\") == 1.0);\n",
       "    };\n",
       "\n",
       "    if (xgridlines) xgridlines.selectAll(\"path\").forEach(mark_inscale);\n",
       "    if (ygridlines) ygridlines.selectAll(\"path\").forEach(mark_inscale);\n",
       "    if (xlabels) xlabels.selectAll(\"text\").forEach(mark_inscale);\n",
       "    if (ylabels) ylabels.selectAll(\"text\").forEach(mark_inscale);\n",
       "\n",
       "    // figure out the upper ond lower bounds on panning using the maximum\n",
       "    // and minum grid lines\n",
       "    var bounds = root.plotbounds();\n",
       "    var pan_bounds = {\n",
       "        x0: 0.0,\n",
       "        y0: 0.0,\n",
       "        x1: 0.0,\n",
       "        y1: 0.0\n",
       "    };\n",
       "\n",
       "    if (xgridlines) {\n",
       "        xgridlines\n",
       "            .selectAll(\"path\")\n",
       "            .forEach(function (element, i) {\n",
       "                if (element.attribute(\"gadfly:inscale\") == \"true\") {\n",
       "                    var bbox = element.node.getBBox();\n",
       "                    if (bounds.x1 - bbox.x < pan_bounds.x0) {\n",
       "                        pan_bounds.x0 = bounds.x1 - bbox.x;\n",
       "                    }\n",
       "                    if (bounds.x0 - bbox.x > pan_bounds.x1) {\n",
       "                        pan_bounds.x1 = bounds.x0 - bbox.x;\n",
       "                    }\n",
       "                    element.attr(\"visibility\", \"visible\");\n",
       "                }\n",
       "            });\n",
       "    }\n",
       "\n",
       "    if (ygridlines) {\n",
       "        ygridlines\n",
       "            .selectAll(\"path\")\n",
       "            .forEach(function (element, i) {\n",
       "                if (element.attribute(\"gadfly:inscale\") == \"true\") {\n",
       "                    var bbox = element.node.getBBox();\n",
       "                    if (bounds.y1 - bbox.y < pan_bounds.y0) {\n",
       "                        pan_bounds.y0 = bounds.y1 - bbox.y;\n",
       "                    }\n",
       "                    if (bounds.y0 - bbox.y > pan_bounds.y1) {\n",
       "                        pan_bounds.y1 = bounds.y0 - bbox.y;\n",
       "                    }\n",
       "                    element.attr(\"visibility\", \"visible\");\n",
       "                }\n",
       "            });\n",
       "    }\n",
       "\n",
       "    // nudge these values a little\n",
       "    pan_bounds.x0 -= 5;\n",
       "    pan_bounds.x1 += 5;\n",
       "    pan_bounds.y0 -= 5;\n",
       "    pan_bounds.y1 += 5;\n",
       "    root.data(\"pan_bounds\", pan_bounds);\n",
       "\n",
       "    root.data(\"zoompan-ready\", true)\n",
       "};\n",
       "\n",
       "\n",
       "// drag actions, i.e. zooming and panning\n",
       "var pan_action = {\n",
       "    start: function(root, x, y, event) {\n",
       "        root.data(\"dx\", 0);\n",
       "        root.data(\"dy\", 0);\n",
       "        root.data(\"tx0\", root.data(\"tx\"));\n",
       "        root.data(\"ty0\", root.data(\"ty\"));\n",
       "    },\n",
       "    update: function(root, dx, dy, x, y, event) {\n",
       "        var px_per_mm = root.data(\"px_per_mm\");\n",
       "        dx /= px_per_mm;\n",
       "        dy /= px_per_mm;\n",
       "\n",
       "        var tx0 = root.data(\"tx\"),\n",
       "            ty0 = root.data(\"ty\");\n",
       "\n",
       "        var dx0 = root.data(\"dx\"),\n",
       "            dy0 = root.data(\"dy\");\n",
       "\n",
       "        root.data(\"dx\", dx);\n",
       "        root.data(\"dy\", dy);\n",
       "\n",
       "        dx = dx - dx0;\n",
       "        dy = dy - dy0;\n",
       "\n",
       "        var tx = tx0 + dx,\n",
       "            ty = ty0 + dy;\n",
       "\n",
       "        set_plot_pan_zoom(root, tx, ty, root.data(\"scale\"));\n",
       "    },\n",
       "    end: function(root, event) {\n",
       "\n",
       "    },\n",
       "    cancel: function(root) {\n",
       "        set_plot_pan_zoom(root, root.data(\"tx0\"), root.data(\"ty0\"), root.data(\"scale\"));\n",
       "    }\n",
       "};\n",
       "\n",
       "var zoom_box;\n",
       "var zoom_action = {\n",
       "    start: function(root, x, y, event) {\n",
       "        var bounds = root.plotbounds();\n",
       "        var width = bounds.x1 - bounds.x0,\n",
       "            height = bounds.y1 - bounds.y0;\n",
       "        var ratio = width / height;\n",
       "        var xscalable = root.hasClass(\"xscalable\"),\n",
       "            yscalable = root.hasClass(\"yscalable\");\n",
       "        var px_per_mm = root.data(\"px_per_mm\");\n",
       "        x = xscalable ? x / px_per_mm : bounds.x0;\n",
       "        y = yscalable ? y / px_per_mm : bounds.y0;\n",
       "        var w = xscalable ? 0 : width;\n",
       "        var h = yscalable ? 0 : height;\n",
       "        zoom_box = root.rect(x, y, w, h).attr({\n",
       "            \"fill\": \"#000\",\n",
       "            \"opacity\": 0.25\n",
       "        });\n",
       "        zoom_box.data(\"ratio\", ratio);\n",
       "    },\n",
       "    update: function(root, dx, dy, x, y, event) {\n",
       "        var xscalable = root.hasClass(\"xscalable\"),\n",
       "            yscalable = root.hasClass(\"yscalable\");\n",
       "        var px_per_mm = root.data(\"px_per_mm\");\n",
       "        var bounds = root.plotbounds();\n",
       "        if (yscalable) {\n",
       "            y /= px_per_mm;\n",
       "            y = Math.max(bounds.y0, y);\n",
       "            y = Math.min(bounds.y1, y);\n",
       "        } else {\n",
       "            y = bounds.y1;\n",
       "        }\n",
       "        if (xscalable) {\n",
       "            x /= px_per_mm;\n",
       "            x = Math.max(bounds.x0, x);\n",
       "            x = Math.min(bounds.x1, x);\n",
       "        } else {\n",
       "            x = bounds.x1;\n",
       "        }\n",
       "\n",
       "        dx = x - zoom_box.attr(\"x\");\n",
       "        dy = y - zoom_box.attr(\"y\");\n",
       "        if (xscalable && yscalable) {\n",
       "            var ratio = zoom_box.data(\"ratio\");\n",
       "            var width = Math.min(Math.abs(dx), ratio * Math.abs(dy));\n",
       "            var height = Math.min(Math.abs(dy), Math.abs(dx) / ratio);\n",
       "            dx = width * dx / Math.abs(dx);\n",
       "            dy = height * dy / Math.abs(dy);\n",
       "        }\n",
       "        var xoffset = 0,\n",
       "            yoffset = 0;\n",
       "        if (dx < 0) {\n",
       "            xoffset = dx;\n",
       "            dx = -1 * dx;\n",
       "        }\n",
       "        if (dy < 0) {\n",
       "            yoffset = dy;\n",
       "            dy = -1 * dy;\n",
       "        }\n",
       "        if (isNaN(dy)) {\n",
       "            dy = 0.0;\n",
       "        }\n",
       "        if (isNaN(dx)) {\n",
       "            dx = 0.0;\n",
       "        }\n",
       "        zoom_box.transform(\"T\" + xoffset + \",\" + yoffset);\n",
       "        zoom_box.attr(\"width\", dx);\n",
       "        zoom_box.attr(\"height\", dy);\n",
       "    },\n",
       "    end: function(root, event) {\n",
       "        var xscalable = root.hasClass(\"xscalable\"),\n",
       "            yscalable = root.hasClass(\"yscalable\");\n",
       "        var zoom_bounds = zoom_box.getBBox();\n",
       "        if (zoom_bounds.width * zoom_bounds.height <= 0) {\n",
       "            return;\n",
       "        }\n",
       "        var plot_bounds = root.plotbounds();\n",
       "        var zoom_factor = 1.0;\n",
       "        if (yscalable) {\n",
       "            zoom_factor = (plot_bounds.y1 - plot_bounds.y0) / zoom_bounds.height;\n",
       "        } else {\n",
       "            zoom_factor = (plot_bounds.x1 - plot_bounds.x0) / zoom_bounds.width;\n",
       "        }\n",
       "        var tx = (root.data(\"tx\") - zoom_bounds.x) * zoom_factor + plot_bounds.x0,\n",
       "            ty = (root.data(\"ty\") - zoom_bounds.y) * zoom_factor + plot_bounds.y0;\n",
       "        set_plot_pan_zoom(root, tx, ty, root.data(\"scale\") * zoom_factor);\n",
       "        zoom_box.remove();\n",
       "    },\n",
       "    cancel: function(root) {\n",
       "        zoom_box.remove();\n",
       "    }\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.guide_background_drag_onstart = function(x, y, event) {\n",
       "    var root = this.plotroot();\n",
       "    var scalable = root.hasClass(\"xscalable\") || root.hasClass(\"yscalable\");\n",
       "    var zoomable = !event.altKey && !event.ctrlKey && event.shiftKey && scalable;\n",
       "    var panable = !event.altKey && !event.ctrlKey && !event.shiftKey && scalable;\n",
       "    var drag_action = zoomable ? zoom_action :\n",
       "                      panable  ? pan_action :\n",
       "                                 undefined;\n",
       "    root.data(\"drag_action\", drag_action);\n",
       "    if (drag_action) {\n",
       "        var cancel_drag_action = function(event) {\n",
       "            if (event.which == 27) { // esc key\n",
       "                drag_action.cancel(root);\n",
       "                root.data(\"drag_action\", undefined);\n",
       "            }\n",
       "        };\n",
       "        window.addEventListener(\"keyup\", cancel_drag_action);\n",
       "        root.data(\"cancel_drag_action\", cancel_drag_action);\n",
       "        drag_action.start(root, x, y, event);\n",
       "    }\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.guide_background_drag_onmove = function(dx, dy, x, y, event) {\n",
       "    var root = this.plotroot();\n",
       "    var drag_action = root.data(\"drag_action\");\n",
       "    if (drag_action) {\n",
       "        drag_action.update(root, dx, dy, x, y, event);\n",
       "    }\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.guide_background_drag_onend = function(event) {\n",
       "    var root = this.plotroot();\n",
       "    window.removeEventListener(\"keyup\", root.data(\"cancel_drag_action\"));\n",
       "    root.data(\"cancel_drag_action\", undefined);\n",
       "    var drag_action = root.data(\"drag_action\");\n",
       "    if (drag_action) {\n",
       "        drag_action.end(root, event);\n",
       "    }\n",
       "    root.data(\"drag_action\", undefined);\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.guide_background_scroll = function(event) {\n",
       "    if (event.shiftKey) {\n",
       "        increase_zoom_by_position(this.plotroot(), 0.001 * event.wheelDelta);\n",
       "        event.preventDefault();\n",
       "    }\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.zoomslider_button_mouseover = function(event) {\n",
       "    this.select(\".button_logo\")\n",
       "         .animate({fill: this.data(\"mouseover_color\")}, 100);\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.zoomslider_button_mouseout = function(event) {\n",
       "     this.select(\".button_logo\")\n",
       "         .animate({fill: this.data(\"mouseout_color\")}, 100);\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.zoomslider_zoomout_click = function(event) {\n",
       "    increase_zoom_by_position(this.plotroot(), -0.1, true);\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.zoomslider_zoomin_click = function(event) {\n",
       "    increase_zoom_by_position(this.plotroot(), 0.1, true);\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.zoomslider_track_click = function(event) {\n",
       "    // TODO\n",
       "};\n",
       "\n",
       "\n",
       "// Map slider position x to scale y using the function y = a*exp(b*x)+c.\n",
       "// The constants a, b, and c are solved using the constraint that the function\n",
       "// should go through the points (0; min_scale), (0.5; 1), and (1; max_scale).\n",
       "var scale_from_slider_position = function(position, min_scale, max_scale) {\n",
       "    var a = (1 - 2 * min_scale + min_scale * min_scale) / (min_scale + max_scale - 2),\n",
       "        b = 2 * Math.log((max_scale - 1) / (1 - min_scale)),\n",
       "        c = (min_scale * max_scale - 1) / (min_scale + max_scale - 2);\n",
       "    return a * Math.exp(b * position) + c;\n",
       "}\n",
       "\n",
       "// inverse of scale_from_slider_position\n",
       "var slider_position_from_scale = function(scale, min_scale, max_scale) {\n",
       "    var a = (1 - 2 * min_scale + min_scale * min_scale) / (min_scale + max_scale - 2),\n",
       "        b = 2 * Math.log((max_scale - 1) / (1 - min_scale)),\n",
       "        c = (min_scale * max_scale - 1) / (min_scale + max_scale - 2);\n",
       "    return 1 / b * Math.log((scale - c) / a);\n",
       "}\n",
       "\n",
       "var increase_zoom_by_position = function(root, delta_position, animate) {\n",
       "    var scale = root.data(\"scale\"),\n",
       "        min_scale = root.data(\"min_scale\"),\n",
       "        max_scale = root.data(\"max_scale\");\n",
       "    var position = slider_position_from_scale(scale, min_scale, max_scale);\n",
       "    position += delta_position;\n",
       "    scale = scale_from_slider_position(position, min_scale, max_scale);\n",
       "    set_zoom(root, scale, animate);\n",
       "}\n",
       "\n",
       "var set_zoom = function(root, scale, animate) {\n",
       "    var min_scale = root.data(\"min_scale\"),\n",
       "        max_scale = root.data(\"max_scale\"),\n",
       "        old_scale = root.data(\"scale\");\n",
       "    var new_scale = Math.max(min_scale, Math.min(scale, max_scale));\n",
       "    if (animate) {\n",
       "        Snap.animate(\n",
       "            old_scale,\n",
       "            new_scale,\n",
       "            function (new_scale) {\n",
       "                update_plot_scale(root, new_scale);\n",
       "            },\n",
       "            200);\n",
       "    } else {\n",
       "        update_plot_scale(root, new_scale);\n",
       "    }\n",
       "}\n",
       "\n",
       "\n",
       "var update_plot_scale = function(root, new_scale) {\n",
       "    var trans = scale_centered_translation(root, new_scale);\n",
       "    set_plot_pan_zoom(root, trans.x, trans.y, new_scale);\n",
       "\n",
       "    root.selectAll(\".zoomslider_thumb\")\n",
       "        .forEach(function (element, i) {\n",
       "            var min_pos = element.data(\"min_pos\"),\n",
       "                max_pos = element.data(\"max_pos\"),\n",
       "                min_scale = root.data(\"min_scale\"),\n",
       "                max_scale = root.data(\"max_scale\");\n",
       "            var xmid = (min_pos + max_pos) / 2;\n",
       "            var xpos = slider_position_from_scale(new_scale, min_scale, max_scale);\n",
       "            element.transform(new Snap.Matrix().translate(\n",
       "                Math.max(min_pos, Math.min(\n",
       "                         max_pos, min_pos + (max_pos - min_pos) * xpos)) - xmid, 0));\n",
       "    });\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.zoomslider_thumb_dragmove = function(dx, dy, x, y, event) {\n",
       "    var root = this.plotroot();\n",
       "    var min_pos = this.data(\"min_pos\"),\n",
       "        max_pos = this.data(\"max_pos\"),\n",
       "        min_scale = root.data(\"min_scale\"),\n",
       "        max_scale = root.data(\"max_scale\"),\n",
       "        old_scale = root.data(\"old_scale\");\n",
       "\n",
       "    var px_per_mm = root.data(\"px_per_mm\");\n",
       "    dx /= px_per_mm;\n",
       "    dy /= px_per_mm;\n",
       "\n",
       "    var xmid = (min_pos + max_pos) / 2;\n",
       "    var xpos = slider_position_from_scale(old_scale, min_scale, max_scale) +\n",
       "                   dx / (max_pos - min_pos);\n",
       "\n",
       "    // compute the new scale\n",
       "    var new_scale = scale_from_slider_position(xpos, min_scale, max_scale);\n",
       "    new_scale = Math.min(max_scale, Math.max(min_scale, new_scale));\n",
       "\n",
       "    update_plot_scale(root, new_scale);\n",
       "    event.stopPropagation();\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.zoomslider_thumb_dragstart = function(x, y, event) {\n",
       "    this.animate({fill: this.data(\"mouseover_color\")}, 100);\n",
       "    var root = this.plotroot();\n",
       "\n",
       "    // keep track of what the scale was when we started dragging\n",
       "    root.data(\"old_scale\", root.data(\"scale\"));\n",
       "    event.stopPropagation();\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.zoomslider_thumb_dragend = function(event) {\n",
       "    this.animate({fill: this.data(\"mouseout_color\")}, 100);\n",
       "    event.stopPropagation();\n",
       "};\n",
       "\n",
       "\n",
       "var toggle_color_class = function(root, color_class, ison) {\n",
       "    var guides = root.selectAll(\".guide.\" + color_class + \",.guide .\" + color_class);\n",
       "    var geoms = root.selectAll(\".geometry.\" + color_class + \",.geometry .\" + color_class);\n",
       "    if (ison) {\n",
       "        guides.animate({opacity: 0.5}, 250);\n",
       "        geoms.animate({opacity: 0.0}, 250);\n",
       "    } else {\n",
       "        guides.animate({opacity: 1.0}, 250);\n",
       "        geoms.animate({opacity: 1.0}, 250);\n",
       "    }\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.colorkey_swatch_click = function(event) {\n",
       "    var root = this.plotroot();\n",
       "    var color_class = this.data(\"color_class\");\n",
       "\n",
       "    if (event.shiftKey) {\n",
       "        root.selectAll(\".colorkey text\")\n",
       "            .forEach(function (element) {\n",
       "                var other_color_class = element.data(\"color_class\");\n",
       "                if (other_color_class != color_class) {\n",
       "                    toggle_color_class(root, other_color_class,\n",
       "                                       element.attr(\"opacity\") == 1.0);\n",
       "                }\n",
       "            });\n",
       "    } else {\n",
       "        toggle_color_class(root, color_class, this.attr(\"opacity\") == 1.0);\n",
       "    }\n",
       "};\n",
       "\n",
       "\n",
       "return Gadfly;\n",
       "\n",
       "}));\n",
       "\n",
       "\n",
       "//@ sourceURL=gadfly.js\n",
       "\n",
       "(function (glob, factory) {\n",
       "    // AMD support\n",
       "      if (typeof require === \"function\" && typeof define === \"function\" && define.amd) {\n",
       "        require([\"Snap.svg\", \"Gadfly\"], function (Snap, Gadfly) {\n",
       "            factory(Snap, Gadfly);\n",
       "        });\n",
       "      } else {\n",
       "          factory(glob.Snap, glob.Gadfly);\n",
       "      }\n",
       "})(window, function (Snap, Gadfly) {\n",
       "    var fig = Snap(\"#img-5cbf6b2f\");\n",
       "fig.select(\"#img-5cbf6b2f-4\")\n",
       "   .drag(function() {}, function() {}, function() {});\n",
       "fig.select(\"#img-5cbf6b2f-6\")\n",
       "   .data(\"color_class\", \"color_f1\")\n",
       ".click(Gadfly.colorkey_swatch_click)\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-7\")\n",
       "   .data(\"color_class\", \"color_f2\")\n",
       ".click(Gadfly.colorkey_swatch_click)\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-9\")\n",
       "   .data(\"color_class\", \"color_f1\")\n",
       ".click(Gadfly.colorkey_swatch_click)\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-10\")\n",
       "   .data(\"color_class\", \"color_f2\")\n",
       ".click(Gadfly.colorkey_swatch_click)\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-14\")\n",
       "   .init_gadfly();\n",
       "fig.select(\"#img-5cbf6b2f-17\")\n",
       "   .plotroot().data(\"unfocused_ygrid_color\", \"#D0D0E0\")\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-17\")\n",
       "   .plotroot().data(\"focused_ygrid_color\", \"#A0A0A0\")\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-131\")\n",
       "   .plotroot().data(\"unfocused_xgrid_color\", \"#D0D0E0\")\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-131\")\n",
       "   .plotroot().data(\"focused_xgrid_color\", \"#A0A0A0\")\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-317\")\n",
       "   .data(\"mouseover_color\", \"#CD5C5C\")\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-317\")\n",
       "   .data(\"mouseout_color\", \"#6A6A6A\")\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-317\")\n",
       "   .click(Gadfly.zoomslider_zoomin_click)\n",
       ".mouseenter(Gadfly.zoomslider_button_mouseover)\n",
       ".mouseleave(Gadfly.zoomslider_button_mouseout)\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-321\")\n",
       "   .data(\"max_pos\", 111.58)\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-321\")\n",
       "   .data(\"min_pos\", 94.58)\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-321\")\n",
       "   .click(Gadfly.zoomslider_track_click);\n",
       "fig.select(\"#img-5cbf6b2f-323\")\n",
       "   .data(\"max_pos\", 111.58)\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-323\")\n",
       "   .data(\"min_pos\", 94.58)\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-323\")\n",
       "   .data(\"mouseover_color\", \"#CD5C5C\")\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-323\")\n",
       "   .data(\"mouseout_color\", \"#6A6A6A\")\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-323\")\n",
       "   .drag(Gadfly.zoomslider_thumb_dragmove,\n",
       "     Gadfly.zoomslider_thumb_dragstart,\n",
       "     Gadfly.zoomslider_thumb_dragend)\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-325\")\n",
       "   .data(\"mouseover_color\", \"#CD5C5C\")\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-325\")\n",
       "   .data(\"mouseout_color\", \"#6A6A6A\")\n",
       ";\n",
       "fig.select(\"#img-5cbf6b2f-325\")\n",
       "   .click(Gadfly.zoomslider_zoomout_click)\n",
       ".mouseenter(Gadfly.zoomslider_button_mouseover)\n",
       ".mouseleave(Gadfly.zoomslider_button_mouseout)\n",
       ";\n",
       "    });\n",
       "]]> </script>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "Plot(...)"
      ]
     },
     "execution_count": 245,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "using Gadfly\n",
    "plot(layer([f, g], -3, 3), layer(x=xs, y=f.(xs), Geom.point))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1変数関数の微分を計算する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 246,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import ForwardDiff  # https://github.com/JuliaDiff/ForwardDiff.jl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 247,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "f′ (generic function with 1 method)"
      ]
     },
     "execution_count": 247,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f(x) = sin(x) * exp(-x)\n",
    "f′(x) = ForwardDiff.derivative(f, x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 248,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.3095598756531122"
      ]
     },
     "execution_count": 248,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f(1.0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 249,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.11079376530669924"
      ]
     },
     "execution_count": 249,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f′(1.0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 250,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\"\n",
       "     xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n",
       "     xmlns:gadfly=\"http://www.gadflyjl.org/ns\"\n",
       "     version=\"1.2\"\n",
       "     width=\"141.42mm\" height=\"100mm\" viewBox=\"0 0 141.42 100\"\n",
       "     stroke=\"none\"\n",
       "     fill=\"#000000\"\n",
       "     stroke-width=\"0.3\"\n",
       "     font-size=\"3.88\"\n",
       ">\n",
       "<g class=\"plotroot xscalable yscalable\" id=\"img-81c4d93a-1\">\n",
       "  <g font-size=\"3.88\" font-family=\"'PT Sans','Helvetica Neue','Helvetica',sans-serif\" fill=\"#564A55\" stroke=\"#000000\" stroke-opacity=\"0.000\" id=\"img-81c4d93a-2\">\n",
       "    <text x=\"73.33\" y=\"88.39\" text-anchor=\"middle\" dy=\"0.6em\">x</text>\n",
       "  </g>\n",
       "  <g class=\"guide xlabels\" font-size=\"2.82\" font-family=\"'PT Sans Caption','Helvetica Neue','Helvetica',sans-serif\" fill=\"#6C606B\" id=\"img-81c4d93a-3\">\n",
       "    <text x=\"21.07\" y=\"81.72\" text-anchor=\"middle\" dy=\"0.6em\">-3</text>\n",
       "    <text x=\"38.49\" y=\"81.72\" text-anchor=\"middle\" dy=\"0.6em\">-2</text>\n",
       "    <text x=\"55.91\" y=\"81.72\" text-anchor=\"middle\" dy=\"0.6em\">-1</text>\n",
       "    <text x=\"73.33\" y=\"81.72\" text-anchor=\"middle\" dy=\"0.6em\">0</text>\n",
       "    <text x=\"90.75\" y=\"81.72\" text-anchor=\"middle\" dy=\"0.6em\">1</text>\n",
       "    <text x=\"108.17\" y=\"81.72\" text-anchor=\"middle\" dy=\"0.6em\">2</text>\n",
       "    <text x=\"125.58\" y=\"81.72\" text-anchor=\"middle\" dy=\"0.6em\">3</text>\n",
       "  </g>\n",
       "  <g class=\"guide colorkey\" id=\"img-81c4d93a-4\">\n",
       "    <g fill=\"#4C404B\" font-size=\"2.82\" font-family=\"'PT Sans','Helvetica Neue','Helvetica',sans-serif\" id=\"img-81c4d93a-5\">\n",
       "      <text x=\"132.05\" y=\"42.86\" dy=\"0.35em\" id=\"img-81c4d93a-6\" class=\"color_f1\">f<tspan style=\"dominant-baseline:inherit\" dy=\"0.6em\" font-size=\"83%\">1</tspan><tspan dy=\"-0.498000em\"></tspan></text>\n",
       "      <text x=\"132.05\" y=\"47.8\" dy=\"0.35em\" id=\"img-81c4d93a-7\" class=\"color_f2\">f<tspan style=\"dominant-baseline:inherit\" dy=\"0.6em\" font-size=\"83%\">2</tspan><tspan dy=\"-0.498000em\"></tspan></text>\n",
       "    </g>\n",
       "    <g stroke=\"#000000\" stroke-opacity=\"0.000\" id=\"img-81c4d93a-8\">\n",
       "      <rect x=\"128.58\" y=\"41.62\" width=\"2.47\" height=\"2.47\" id=\"img-81c4d93a-9\" class=\"color_f1\" fill=\"#00BFFF\"/>\n",
       "      <rect x=\"128.58\" y=\"46.56\" width=\"2.47\" height=\"2.47\" id=\"img-81c4d93a-10\" class=\"color_f2\" fill=\"#D4CA3A\"/>\n",
       "    </g>\n",
       "    <g fill=\"#362A35\" font-size=\"3.88\" font-family=\"'PT Sans','Helvetica Neue','Helvetica',sans-serif\" stroke=\"#000000\" stroke-opacity=\"0.000\" id=\"img-81c4d93a-11\">\n",
       "      <text x=\"128.58\" y=\"37.72\" id=\"img-81c4d93a-12\">Color</text>\n",
       "    </g>\n",
       "  </g>\n",
       "<g clip-path=\"url(#img-81c4d93a-13)\">\n",
       "  <g id=\"img-81c4d93a-14\">\n",
       "    <g pointer-events=\"visible\" opacity=\"1\" fill=\"#000000\" fill-opacity=\"0.000\" stroke=\"#000000\" stroke-opacity=\"0.000\" class=\"guide background\" id=\"img-81c4d93a-15\">\n",
       "      <rect x=\"19.07\" y=\"5\" width=\"108.51\" height=\"75.72\" id=\"img-81c4d93a-16\"/>\n",
       "    </g>\n",
       "    <g class=\"guide ygridlines xfixed\" stroke-dasharray=\"0.5,0.5\" stroke-width=\"0.2\" stroke=\"#D0D0E0\" id=\"img-81c4d93a-17\">\n",
       "      <path fill=\"none\" d=\"M19.07,78.72 L 127.58 78.72\" id=\"img-81c4d93a-18\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,64.37 L 127.58 64.37\" id=\"img-81c4d93a-19\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,50.03 L 127.58 50.03\" id=\"img-81c4d93a-20\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,35.69 L 127.58 35.69\" id=\"img-81c4d93a-21\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,21.34 L 127.58 21.34\" id=\"img-81c4d93a-22\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,7 L 127.58 7\" id=\"img-81c4d93a-23\"/>\n",
       "    </g>\n",
       "    <g class=\"guide xgridlines yfixed\" stroke-dasharray=\"0.5,0.5\" stroke-width=\"0.2\" stroke=\"#D0D0E0\" id=\"img-81c4d93a-24\">\n",
       "      <path fill=\"none\" d=\"M21.07,5 L 21.07 80.72\" id=\"img-81c4d93a-25\"/>\n",
       "      <path fill=\"none\" d=\"M38.49,5 L 38.49 80.72\" id=\"img-81c4d93a-26\"/>\n",
       "      <path fill=\"none\" d=\"M55.91,5 L 55.91 80.72\" id=\"img-81c4d93a-27\"/>\n",
       "      <path fill=\"none\" d=\"M73.33,5 L 73.33 80.72\" id=\"img-81c4d93a-28\"/>\n",
       "      <path fill=\"none\" d=\"M90.75,5 L 90.75 80.72\" id=\"img-81c4d93a-29\"/>\n",
       "      <path fill=\"none\" d=\"M108.17,5 L 108.17 80.72\" id=\"img-81c4d93a-30\"/>\n",
       "      <path fill=\"none\" d=\"M125.58,5 L 125.58 80.72\" id=\"img-81c4d93a-31\"/>\n",
       "    </g>\n",
       "    <g class=\"plotpanel\" id=\"img-81c4d93a-32\">\n",
       "      <g stroke-width=\"0.3\" fill=\"#000000\" fill-opacity=\"0.000\" stroke-dasharray=\"none\" id=\"img-81c4d93a-33\">\n",
       "        <path fill=\"none\" d=\"M21.07,29.47 L 21.49 30.62 21.91 31.7 22.33 32.72 22.75 33.68 23.17 34.58 23.59 35.42 24.01 36.2 24.43 36.94 24.85 37.62 25.27 38.25 25.69 38.83 26.11 39.36 26.53 39.85 26.95 40.29 27.37 40.69 27.79 41.06 28.21 41.38 28.63 41.66 29.05 41.91 29.47 42.12 29.89 42.3 30.31 42.45 30.73 42.56 31.15 42.65 31.56 42.71 31.98 42.74 32.4 42.74 32.82 42.72 33.24 42.68 33.66 42.62 34.08 42.53 34.5 42.43 34.92 42.3 35.34 42.16 35.76 42 36.18 41.82 36.6 41.63 37.02 41.43 37.44 41.21 37.86 40.98 38.28 40.74 38.7 40.49 39.12 40.23 39.54 39.96 39.96 39.68 40.38 39.39 40.8 39.1 41.22 38.8 41.64 38.49 42.06 38.18 42.48 37.87 42.9 37.55 43.32 37.22 43.74 36.9 44.16 36.57 44.58 36.24 45 35.91 45.42 35.58 45.84 35.25 46.26 34.91 46.68 34.58 47.09 34.25 47.51 33.92 47.93 33.59 48.35 33.26 48.77 32.94 49.19 32.61 49.61 32.29 50.03 31.97 50.45 31.66 50.87 31.34 51.29 31.04 51.71 30.73 52.13 30.43 52.55 30.13 52.97 29.84 53.39 29.55 53.81 29.26 54.23 28.98 54.65 28.71 55.07 28.43 55.49 28.17 55.91 27.9 56.33 27.65 56.75 27.4 57.17 27.15 57.59 26.91 58.01 26.67 58.43 26.44 58.85 26.21 59.27 25.99 59.69 25.77 60.11 25.56 60.53 25.35 60.95 25.15 61.37 24.96 61.79 24.77 62.21 24.58 62.63 24.4 63.04 24.22 63.46 24.05 63.88 23.89 64.3 23.73 64.72 23.57 65.14 23.42 65.56 23.27 65.98 23.13 66.4 23 66.82 22.86 67.24 22.74 67.66 22.61 68.08 22.49 68.5 22.38 68.92 22.27 69.34 22.16 69.76 22.06 70.18 21.96 70.6 21.87 71.02 21.78 71.44 21.69 71.86 21.61 72.28 21.53 72.7 21.45 73.12 21.38 73.54 21.31 73.96 21.24 74.38 21.18 74.8 21.12 75.22 21.06 75.64 21.01 76.06 20.96 76.48 20.91 76.9 20.87 77.32 20.83 77.74 20.79 78.16 20.75 78.57 20.71 78.99 20.68 79.41 20.65 79.83 20.62 80.25 20.6 80.67 20.57 81.09 20.55 81.51 20.53 81.93 20.51 82.35 20.5 82.77 20.48 83.19 20.47 83.61 20.46 84.03 20.45 84.45 20.44 84.87 20.43 85.29 20.43 85.71 20.42 86.13 20.42 86.55 20.42 86.97 20.42 87.39 20.42 87.81 20.42 88.23 20.42 88.65 20.43 89.07 20.43 89.49 20.44 89.91 20.44 90.33 20.45 90.75 20.45 91.17 20.46 91.59 20.47 92.01 20.48 92.43 20.49 92.85 20.5 93.27 20.51 93.69 20.52 94.1 20.53 94.52 20.55 94.94 20.56 95.36 20.57 95.78 20.58 96.2 20.6 96.62 20.61 97.04 20.62 97.46 20.64 97.88 20.65 98.3 20.67 98.72 20.68 99.14 20.69 99.56 20.71 99.98 20.72 100.4 20.74 100.82 20.75 101.24 20.77 101.66 20.78 102.08 20.79 102.5 20.81 102.92 20.82 103.34 20.84 103.76 20.85 104.18 20.86 104.6 20.88 105.02 20.89 105.44 20.91 105.86 20.92 106.28 20.93 106.7 20.95 107.12 20.96 107.54 20.97 107.96 20.98 108.38 21 108.8 21.01 109.22 21.02 109.63 21.03 110.05 21.04 110.47 21.06 110.89 21.07 111.31 21.08 111.73 21.09 112.15 21.1 112.57 21.11 112.99 21.12 113.41 21.13 113.83 21.14 114.25 21.15 114.67 21.16 115.09 21.17 115.51 21.18 115.93 21.18 116.35 21.19 116.77 21.2 117.19 21.21 117.61 21.22 118.03 21.22 118.45 21.23 118.87 21.24 119.29 21.24 119.71 21.25 120.13 21.26 120.55 21.26 120.97 21.27 121.39 21.28 121.81 21.28 122.23 21.29 122.65 21.29 123.07 21.3 123.49 21.3 123.91 21.31 124.33 21.31 124.75 21.31 125.16 21.32 125.58 21.32\" id=\"img-81c4d93a-34\" stroke=\"#00BFFF\" class=\"geometry color_f1\"/>\n",
       "        <path fill=\"none\" d=\"M21.07,70.25 L 21.49 67.54 21.91 64.91 22.33 62.34 22.75 59.86 23.17 57.44 23.59 55.1 24.01 52.83 24.43 50.63 24.85 48.51 25.27 46.45 25.69 44.46 26.11 42.53 26.53 40.68 26.95 38.89 27.37 37.16 27.79 35.5 28.21 33.9 28.63 32.35 29.05 30.87 29.47 29.45 29.89 28.09 30.31 26.78 30.73 25.53 31.15 24.33 31.56 23.19 31.98 22.1 32.4 21.05 32.82 20.06 33.24 19.12 33.66 18.22 34.08 17.37 34.5 16.56 34.92 15.8 35.34 15.07 35.76 14.39 36.18 13.75 36.6 13.15 37.02 12.59 37.44 12.06 37.86 11.57 38.28 11.11 38.7 10.68 39.12 10.29 39.54 9.93 39.96 9.59 40.38 9.29 40.8 9.02 41.22 8.77 41.64 8.55 42.06 8.35 42.48 8.17 42.9 8.02 43.32 7.9 43.74 7.79 44.16 7.7 44.58 7.64 45 7.59 45.42 7.56 45.84 7.54 46.26 7.55 46.68 7.57 47.09 7.6 47.51 7.65 47.93 7.71 48.35 7.78 48.77 7.87 49.19 7.96 49.61 8.07 50.03 8.19 50.45 8.31 50.87 8.45 51.29 8.59 51.71 8.74 52.13 8.9 52.55 9.07 52.97 9.24 53.39 9.41 53.81 9.6 54.23 9.78 54.65 9.97 55.07 10.17 55.49 10.37 55.91 10.57 56.33 10.77 56.75 10.98 57.17 11.19 57.59 11.4 58.01 11.61 58.43 11.82 58.85 12.04 59.27 12.25 59.69 12.47 60.11 12.68 60.53 12.89 60.95 13.11 61.37 13.32 61.79 13.53 62.21 13.74 62.63 13.95 63.04 14.16 63.46 14.37 63.88 14.57 64.3 14.77 64.72 14.97 65.14 15.17 65.56 15.37 65.98 15.56 66.4 15.75 66.82 15.94 67.24 16.13 67.66 16.31 68.08 16.49 68.5 16.67 68.92 16.84 69.34 17.01 69.76 17.18 70.18 17.34 70.6 17.51 71.02 17.66 71.44 17.82 71.86 17.97 72.28 18.12 72.7 18.26 73.12 18.4 73.54 18.54 73.96 18.68 74.38 18.81 74.8 18.94 75.22 19.06 75.64 19.18 76.06 19.3 76.48 19.42 76.9 19.53 77.32 19.64 77.74 19.74 78.16 19.85 78.57 19.95 78.99 20.04 79.41 20.13 79.83 20.23 80.25 20.31 80.67 20.4 81.09 20.48 81.51 20.56 81.93 20.63 82.35 20.7 82.77 20.77 83.19 20.84 83.61 20.91 84.03 20.97 84.45 21.03 84.87 21.09 85.29 21.14 85.71 21.19 86.13 21.24 86.55 21.29 86.97 21.34 87.39 21.38 87.81 21.42 88.23 21.46 88.65 21.5 89.07 21.54 89.49 21.57 89.91 21.6 90.33 21.63 90.75 21.66 91.17 21.69 91.59 21.71 92.01 21.74 92.43 21.76 92.85 21.78 93.27 21.8 93.69 21.81 94.1 21.83 94.52 21.85 94.94 21.86 95.36 21.87 95.78 21.88 96.2 21.89 96.62 21.9 97.04 21.91 97.46 21.92 97.88 21.92 98.3 21.93 98.72 21.93 99.14 21.93 99.56 21.94 99.98 21.94 100.4 21.94 100.82 21.94 101.24 21.94 101.66 21.94 102.08 21.94 102.5 21.93 102.92 21.93 103.34 21.93 103.76 21.92 104.18 21.92 104.6 21.91 105.02 21.91 105.44 21.9 105.86 21.9 106.28 21.89 106.7 21.88 107.12 21.88 107.54 21.87 107.96 21.86 108.38 21.85 108.8 21.85 109.22 21.84 109.63 21.83 110.05 21.82 110.47 21.81 110.89 21.8 111.31 21.79 111.73 21.79 112.15 21.78 112.57 21.77 112.99 21.76 113.41 21.75 113.83 21.74 114.25 21.73 114.67 21.72 115.09 21.71 115.51 21.7 115.93 21.69 116.35 21.68 116.77 21.67 117.19 21.67 117.61 21.66 118.03 21.65 118.45 21.64 118.87 21.63 119.29 21.62 119.71 21.61 120.13 21.6 120.55 21.6 120.97 21.59 121.39 21.58 121.81 21.57 122.23 21.56 122.65 21.56 123.07 21.55 123.49 21.54 123.91 21.53 124.33 21.53 124.75 21.52 125.16 21.51 125.58 21.5\" id=\"img-81c4d93a-35\" stroke=\"#D4CA3A\" class=\"geometry color_f2\"/>\n",
       "      </g>\n",
       "    </g>\n",
       "  </g>\n",
       "</g>\n",
       "  <g class=\"guide ylabels\" font-size=\"2.82\" font-family=\"'PT Sans Caption','Helvetica Neue','Helvetica',sans-serif\" fill=\"#6C606B\" id=\"img-81c4d93a-36\">\n",
       "    <text x=\"18.07\" y=\"78.72\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-81c4d93a-37\">-20</text>\n",
       "    <text x=\"18.07\" y=\"64.37\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-81c4d93a-38\">-15</text>\n",
       "    <text x=\"18.07\" y=\"50.03\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-81c4d93a-39\">-10</text>\n",
       "    <text x=\"18.07\" y=\"35.69\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-81c4d93a-40\">-5</text>\n",
       "    <text x=\"18.07\" y=\"21.34\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-81c4d93a-41\">0</text>\n",
       "    <text x=\"18.07\" y=\"7\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-81c4d93a-42\">5</text>\n",
       "  </g>\n",
       "  <g font-size=\"3.88\" font-family=\"'PT Sans','Helvetica Neue','Helvetica',sans-serif\" fill=\"#564A55\" stroke=\"#000000\" stroke-opacity=\"0.000\" id=\"img-81c4d93a-43\">\n",
       "    <text x=\"8.81\" y=\"40.86\" text-anchor=\"middle\" dy=\"0.35em\" transform=\"rotate(-90, 8.81, 42.86)\" id=\"img-81c4d93a-44\">f(x)</text>\n",
       "  </g>\n",
       "</g>\n",
       "<defs>\n",
       "  <clipPath id=\"img-81c4d93a-13\">\n",
       "  <path d=\"M19.07,5 L 127.58 5 127.58 80.72 19.07 80.72\" />\n",
       "</clipPath>\n",
       "</defs>\n",
       "</svg>\n"
      ],
      "text/html": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\"\n",
       "     xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n",
       "     xmlns:gadfly=\"http://www.gadflyjl.org/ns\"\n",
       "     version=\"1.2\"\n",
       "     width=\"141.42mm\" height=\"100mm\" viewBox=\"0 0 141.42 100\"\n",
       "     stroke=\"none\"\n",
       "     fill=\"#000000\"\n",
       "     stroke-width=\"0.3\"\n",
       "     font-size=\"3.88\"\n",
       "\n",
       "     id=\"img-ff04feb6\">\n",
       "<g class=\"plotroot xscalable yscalable\" id=\"img-ff04feb6-1\">\n",
       "  <g font-size=\"3.88\" font-family=\"'PT Sans','Helvetica Neue','Helvetica',sans-serif\" fill=\"#564A55\" stroke=\"#000000\" stroke-opacity=\"0.000\" id=\"img-ff04feb6-2\">\n",
       "    <text x=\"73.33\" y=\"88.39\" text-anchor=\"middle\" dy=\"0.6em\">x</text>\n",
       "  </g>\n",
       "  <g class=\"guide xlabels\" font-size=\"2.82\" font-family=\"'PT Sans Caption','Helvetica Neue','Helvetica',sans-serif\" fill=\"#6C606B\" id=\"img-ff04feb6-3\">\n",
       "    <text x=\"-100.86\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">-10</text>\n",
       "    <text x=\"-83.44\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">-9</text>\n",
       "    <text x=\"-66.02\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">-8</text>\n",
       "    <text x=\"-48.6\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">-7</text>\n",
       "    <text x=\"-31.18\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">-6</text>\n",
       "    <text x=\"-13.77\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">-5</text>\n",
       "    <text x=\"3.65\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">-4</text>\n",
       "    <text x=\"21.07\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"visible\">-3</text>\n",
       "    <text x=\"38.49\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"visible\">-2</text>\n",
       "    <text x=\"55.91\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"visible\">-1</text>\n",
       "    <text x=\"73.33\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"visible\">0</text>\n",
       "    <text x=\"90.75\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"visible\">1</text>\n",
       "    <text x=\"108.17\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"visible\">2</text>\n",
       "    <text x=\"125.58\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"visible\">3</text>\n",
       "    <text x=\"143\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">4</text>\n",
       "    <text x=\"160.42\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">5</text>\n",
       "    <text x=\"177.84\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">6</text>\n",
       "    <text x=\"195.26\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">7</text>\n",
       "    <text x=\"212.68\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">8</text>\n",
       "    <text x=\"230.1\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">9</text>\n",
       "    <text x=\"247.52\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"1.0\" visibility=\"hidden\">10</text>\n",
       "    <text x=\"-83.44\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-9.0</text>\n",
       "    <text x=\"-79.96\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-8.8</text>\n",
       "    <text x=\"-76.47\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-8.6</text>\n",
       "    <text x=\"-72.99\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-8.4</text>\n",
       "    <text x=\"-69.51\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-8.2</text>\n",
       "    <text x=\"-66.02\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-8.0</text>\n",
       "    <text x=\"-62.54\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-7.8</text>\n",
       "    <text x=\"-59.05\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-7.6</text>\n",
       "    <text x=\"-55.57\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-7.4</text>\n",
       "    <text x=\"-52.09\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-7.2</text>\n",
       "    <text x=\"-48.6\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-7.0</text>\n",
       "    <text x=\"-45.12\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-6.8</text>\n",
       "    <text x=\"-41.64\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-6.6</text>\n",
       "    <text x=\"-38.15\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-6.4</text>\n",
       "    <text x=\"-34.67\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-6.2</text>\n",
       "    <text x=\"-31.18\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-6.0</text>\n",
       "    <text x=\"-27.7\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-5.8</text>\n",
       "    <text x=\"-24.22\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-5.6</text>\n",
       "    <text x=\"-20.73\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-5.4</text>\n",
       "    <text x=\"-17.25\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-5.2</text>\n",
       "    <text x=\"-13.77\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-5.0</text>\n",
       "    <text x=\"-10.28\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-4.8</text>\n",
       "    <text x=\"-6.8\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-4.6</text>\n",
       "    <text x=\"-3.31\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-4.4</text>\n",
       "    <text x=\"0.17\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-4.2</text>\n",
       "    <text x=\"3.65\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-4.0</text>\n",
       "    <text x=\"7.14\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-3.8</text>\n",
       "    <text x=\"10.62\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-3.6</text>\n",
       "    <text x=\"14.1\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-3.4</text>\n",
       "    <text x=\"17.59\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-3.2</text>\n",
       "    <text x=\"21.07\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-3.0</text>\n",
       "    <text x=\"24.56\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-2.8</text>\n",
       "    <text x=\"28.04\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-2.6</text>\n",
       "    <text x=\"31.52\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-2.4</text>\n",
       "    <text x=\"35.01\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-2.2</text>\n",
       "    <text x=\"38.49\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-2.0</text>\n",
       "    <text x=\"41.97\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-1.8</text>\n",
       "    <text x=\"45.46\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-1.6</text>\n",
       "    <text x=\"48.94\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-1.4</text>\n",
       "    <text x=\"52.43\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-1.2</text>\n",
       "    <text x=\"55.91\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-1.0</text>\n",
       "    <text x=\"59.39\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-0.8</text>\n",
       "    <text x=\"62.88\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-0.6</text>\n",
       "    <text x=\"66.36\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-0.4</text>\n",
       "    <text x=\"69.84\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">-0.2</text>\n",
       "    <text x=\"73.33\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">0.0</text>\n",
       "    <text x=\"76.81\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">0.2</text>\n",
       "    <text x=\"80.3\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">0.4</text>\n",
       "    <text x=\"83.78\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">0.6</text>\n",
       "    <text x=\"87.26\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">0.8</text>\n",
       "    <text x=\"90.75\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">1.0</text>\n",
       "    <text x=\"94.23\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">1.2</text>\n",
       "    <text x=\"97.71\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">1.4</text>\n",
       "    <text x=\"101.2\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">1.6</text>\n",
       "    <text x=\"104.68\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">1.8</text>\n",
       "    <text x=\"108.17\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">2.0</text>\n",
       "    <text x=\"111.65\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">2.2</text>\n",
       "    <text x=\"115.13\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">2.4</text>\n",
       "    <text x=\"118.62\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">2.6</text>\n",
       "    <text x=\"122.1\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">2.8</text>\n",
       "    <text x=\"125.58\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">3.0</text>\n",
       "    <text x=\"129.07\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">3.2</text>\n",
       "    <text x=\"132.55\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">3.4</text>\n",
       "    <text x=\"136.04\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">3.6</text>\n",
       "    <text x=\"139.52\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">3.8</text>\n",
       "    <text x=\"143\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">4.0</text>\n",
       "    <text x=\"146.49\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">4.2</text>\n",
       "    <text x=\"149.97\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">4.4</text>\n",
       "    <text x=\"153.45\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">4.6</text>\n",
       "    <text x=\"156.94\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">4.8</text>\n",
       "    <text x=\"160.42\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">5.0</text>\n",
       "    <text x=\"163.91\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">5.2</text>\n",
       "    <text x=\"167.39\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">5.4</text>\n",
       "    <text x=\"170.87\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">5.6</text>\n",
       "    <text x=\"174.36\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">5.8</text>\n",
       "    <text x=\"177.84\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">6.0</text>\n",
       "    <text x=\"181.32\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">6.2</text>\n",
       "    <text x=\"184.81\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">6.4</text>\n",
       "    <text x=\"188.29\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">6.6</text>\n",
       "    <text x=\"191.78\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">6.8</text>\n",
       "    <text x=\"195.26\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">7.0</text>\n",
       "    <text x=\"198.74\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">7.2</text>\n",
       "    <text x=\"202.23\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">7.4</text>\n",
       "    <text x=\"205.71\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">7.6</text>\n",
       "    <text x=\"209.2\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">7.8</text>\n",
       "    <text x=\"212.68\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">8.0</text>\n",
       "    <text x=\"216.16\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">8.2</text>\n",
       "    <text x=\"219.65\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">8.4</text>\n",
       "    <text x=\"223.13\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">8.6</text>\n",
       "    <text x=\"226.61\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">8.8</text>\n",
       "    <text x=\"230.1\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"10.0\" visibility=\"hidden\">9.0</text>\n",
       "    <text x=\"-100.86\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"0.5\" visibility=\"hidden\">-10</text>\n",
       "    <text x=\"-13.77\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"0.5\" visibility=\"hidden\">-5</text>\n",
       "    <text x=\"73.33\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"0.5\" visibility=\"hidden\">0</text>\n",
       "    <text x=\"160.42\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"0.5\" visibility=\"hidden\">5</text>\n",
       "    <text x=\"247.52\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"0.5\" visibility=\"hidden\">10</text>\n",
       "    <text x=\"-83.44\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-9.0</text>\n",
       "    <text x=\"-74.73\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-8.5</text>\n",
       "    <text x=\"-66.02\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-8.0</text>\n",
       "    <text x=\"-57.31\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-7.5</text>\n",
       "    <text x=\"-48.6\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-7.0</text>\n",
       "    <text x=\"-39.89\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-6.5</text>\n",
       "    <text x=\"-31.18\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-6.0</text>\n",
       "    <text x=\"-22.48\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-5.5</text>\n",
       "    <text x=\"-13.77\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-5.0</text>\n",
       "    <text x=\"-5.06\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-4.5</text>\n",
       "    <text x=\"3.65\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-4.0</text>\n",
       "    <text x=\"12.36\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-3.5</text>\n",
       "    <text x=\"21.07\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-3.0</text>\n",
       "    <text x=\"29.78\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-2.5</text>\n",
       "    <text x=\"38.49\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-2.0</text>\n",
       "    <text x=\"47.2\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-1.5</text>\n",
       "    <text x=\"55.91\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-1.0</text>\n",
       "    <text x=\"64.62\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">-0.5</text>\n",
       "    <text x=\"73.33\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">0.0</text>\n",
       "    <text x=\"82.04\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">0.5</text>\n",
       "    <text x=\"90.75\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">1.0</text>\n",
       "    <text x=\"99.46\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">1.5</text>\n",
       "    <text x=\"108.17\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">2.0</text>\n",
       "    <text x=\"116.88\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">2.5</text>\n",
       "    <text x=\"125.58\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">3.0</text>\n",
       "    <text x=\"134.29\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">3.5</text>\n",
       "    <text x=\"143\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">4.0</text>\n",
       "    <text x=\"151.71\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">4.5</text>\n",
       "    <text x=\"160.42\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">5.0</text>\n",
       "    <text x=\"169.13\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">5.5</text>\n",
       "    <text x=\"177.84\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">6.0</text>\n",
       "    <text x=\"186.55\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">6.5</text>\n",
       "    <text x=\"195.26\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">7.0</text>\n",
       "    <text x=\"203.97\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">7.5</text>\n",
       "    <text x=\"212.68\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">8.0</text>\n",
       "    <text x=\"221.39\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">8.5</text>\n",
       "    <text x=\"230.1\" y=\"84.39\" text-anchor=\"middle\" gadfly:scale=\"5.0\" visibility=\"hidden\">9.0</text>\n",
       "  </g>\n",
       "  <g class=\"guide colorkey\" id=\"img-ff04feb6-4\">\n",
       "    <g fill=\"#4C404B\" font-size=\"2.82\" font-family=\"'PT Sans','Helvetica Neue','Helvetica',sans-serif\" id=\"img-ff04feb6-5\">\n",
       "      <text x=\"132.05\" y=\"42.86\" dy=\"0.35em\" id=\"img-ff04feb6-6\" class=\"color_f1\">f<tspan style=\"dominant-baseline:inherit\" dy=\"0.6em\" font-size=\"83%\">1</tspan><tspan dy=\"-0.498000em\"></tspan></text>\n",
       "      <text x=\"132.05\" y=\"47.8\" dy=\"0.35em\" id=\"img-ff04feb6-7\" class=\"color_f2\">f<tspan style=\"dominant-baseline:inherit\" dy=\"0.6em\" font-size=\"83%\">2</tspan><tspan dy=\"-0.498000em\"></tspan></text>\n",
       "    </g>\n",
       "    <g stroke=\"#000000\" stroke-opacity=\"0.000\" id=\"img-ff04feb6-8\">\n",
       "      <rect x=\"128.58\" y=\"41.62\" width=\"2.47\" height=\"2.47\" id=\"img-ff04feb6-9\" fill=\"#00BFFF\" class=\"color_f1\"/>\n",
       "      <rect x=\"128.58\" y=\"46.56\" width=\"2.47\" height=\"2.47\" id=\"img-ff04feb6-10\" fill=\"#D4CA3A\" class=\"color_f2\"/>\n",
       "    </g>\n",
       "    <g fill=\"#362A35\" font-size=\"3.88\" font-family=\"'PT Sans','Helvetica Neue','Helvetica',sans-serif\" stroke=\"#000000\" stroke-opacity=\"0.000\" id=\"img-ff04feb6-11\">\n",
       "      <text x=\"128.58\" y=\"37.72\" id=\"img-ff04feb6-12\">Color</text>\n",
       "    </g>\n",
       "  </g>\n",
       "<g clip-path=\"url(#img-ff04feb6-13)\">\n",
       "  <g id=\"img-ff04feb6-14\">\n",
       "    <g pointer-events=\"visible\" opacity=\"1\" fill=\"#000000\" fill-opacity=\"0.000\" stroke=\"#000000\" stroke-opacity=\"0.000\" class=\"guide background\" id=\"img-ff04feb6-15\">\n",
       "      <rect x=\"19.07\" y=\"5\" width=\"108.51\" height=\"75.72\" id=\"img-ff04feb6-16\"/>\n",
       "    </g>\n",
       "    <g class=\"guide ygridlines xfixed\" stroke-dasharray=\"0.5,0.5\" stroke-width=\"0.2\" stroke=\"#D0D0E0\" id=\"img-ff04feb6-17\">\n",
       "      <path fill=\"none\" d=\"M19.07,164.77 L 127.58 164.77\" id=\"img-ff04feb6-18\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,150.43 L 127.58 150.43\" id=\"img-ff04feb6-19\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,136.09 L 127.58 136.09\" id=\"img-ff04feb6-20\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,121.74 L 127.58 121.74\" id=\"img-ff04feb6-21\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,107.4 L 127.58 107.4\" id=\"img-ff04feb6-22\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,93.06 L 127.58 93.06\" id=\"img-ff04feb6-23\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,78.72 L 127.58 78.72\" id=\"img-ff04feb6-24\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,64.37 L 127.58 64.37\" id=\"img-ff04feb6-25\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,50.03 L 127.58 50.03\" id=\"img-ff04feb6-26\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,35.69 L 127.58 35.69\" id=\"img-ff04feb6-27\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,21.34 L 127.58 21.34\" id=\"img-ff04feb6-28\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,7 L 127.58 7\" id=\"img-ff04feb6-29\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-7.34 L 127.58 -7.34\" id=\"img-ff04feb6-30\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-21.69 L 127.58 -21.69\" id=\"img-ff04feb6-31\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-36.03 L 127.58 -36.03\" id=\"img-ff04feb6-32\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-50.37 L 127.58 -50.37\" id=\"img-ff04feb6-33\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-64.71 L 127.58 -64.71\" id=\"img-ff04feb6-34\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-79.06 L 127.58 -79.06\" id=\"img-ff04feb6-35\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,150.43 L 127.58 150.43\" id=\"img-ff04feb6-36\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,147.56 L 127.58 147.56\" id=\"img-ff04feb6-37\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,144.69 L 127.58 144.69\" id=\"img-ff04feb6-38\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,141.82 L 127.58 141.82\" id=\"img-ff04feb6-39\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,138.96 L 127.58 138.96\" id=\"img-ff04feb6-40\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,136.09 L 127.58 136.09\" id=\"img-ff04feb6-41\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,133.22 L 127.58 133.22\" id=\"img-ff04feb6-42\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,130.35 L 127.58 130.35\" id=\"img-ff04feb6-43\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,127.48 L 127.58 127.48\" id=\"img-ff04feb6-44\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,124.61 L 127.58 124.61\" id=\"img-ff04feb6-45\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,121.74 L 127.58 121.74\" id=\"img-ff04feb6-46\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,118.88 L 127.58 118.88\" id=\"img-ff04feb6-47\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,116.01 L 127.58 116.01\" id=\"img-ff04feb6-48\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,113.14 L 127.58 113.14\" id=\"img-ff04feb6-49\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,110.27 L 127.58 110.27\" id=\"img-ff04feb6-50\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,107.4 L 127.58 107.4\" id=\"img-ff04feb6-51\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,104.53 L 127.58 104.53\" id=\"img-ff04feb6-52\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,101.66 L 127.58 101.66\" id=\"img-ff04feb6-53\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,98.8 L 127.58 98.8\" id=\"img-ff04feb6-54\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,95.93 L 127.58 95.93\" id=\"img-ff04feb6-55\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,93.06 L 127.58 93.06\" id=\"img-ff04feb6-56\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,90.19 L 127.58 90.19\" id=\"img-ff04feb6-57\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,87.32 L 127.58 87.32\" id=\"img-ff04feb6-58\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,84.45 L 127.58 84.45\" id=\"img-ff04feb6-59\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,81.58 L 127.58 81.58\" id=\"img-ff04feb6-60\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,78.72 L 127.58 78.72\" id=\"img-ff04feb6-61\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,75.85 L 127.58 75.85\" id=\"img-ff04feb6-62\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,72.98 L 127.58 72.98\" id=\"img-ff04feb6-63\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,70.11 L 127.58 70.11\" id=\"img-ff04feb6-64\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,67.24 L 127.58 67.24\" id=\"img-ff04feb6-65\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,64.37 L 127.58 64.37\" id=\"img-ff04feb6-66\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,61.5 L 127.58 61.5\" id=\"img-ff04feb6-67\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,58.63 L 127.58 58.63\" id=\"img-ff04feb6-68\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,55.77 L 127.58 55.77\" id=\"img-ff04feb6-69\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,52.9 L 127.58 52.9\" id=\"img-ff04feb6-70\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,50.03 L 127.58 50.03\" id=\"img-ff04feb6-71\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,47.16 L 127.58 47.16\" id=\"img-ff04feb6-72\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,44.29 L 127.58 44.29\" id=\"img-ff04feb6-73\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,41.42 L 127.58 41.42\" id=\"img-ff04feb6-74\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,38.55 L 127.58 38.55\" id=\"img-ff04feb6-75\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,35.69 L 127.58 35.69\" id=\"img-ff04feb6-76\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,32.82 L 127.58 32.82\" id=\"img-ff04feb6-77\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,29.95 L 127.58 29.95\" id=\"img-ff04feb6-78\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,27.08 L 127.58 27.08\" id=\"img-ff04feb6-79\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,24.21 L 127.58 24.21\" id=\"img-ff04feb6-80\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,21.34 L 127.58 21.34\" id=\"img-ff04feb6-81\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,18.47 L 127.58 18.47\" id=\"img-ff04feb6-82\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,15.61 L 127.58 15.61\" id=\"img-ff04feb6-83\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,12.74 L 127.58 12.74\" id=\"img-ff04feb6-84\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,9.87 L 127.58 9.87\" id=\"img-ff04feb6-85\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,7 L 127.58 7\" id=\"img-ff04feb6-86\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,4.13 L 127.58 4.13\" id=\"img-ff04feb6-87\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,1.26 L 127.58 1.26\" id=\"img-ff04feb6-88\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-1.61 L 127.58 -1.61\" id=\"img-ff04feb6-89\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-4.47 L 127.58 -4.47\" id=\"img-ff04feb6-90\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-7.34 L 127.58 -7.34\" id=\"img-ff04feb6-91\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-10.21 L 127.58 -10.21\" id=\"img-ff04feb6-92\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-13.08 L 127.58 -13.08\" id=\"img-ff04feb6-93\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-15.95 L 127.58 -15.95\" id=\"img-ff04feb6-94\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-18.82 L 127.58 -18.82\" id=\"img-ff04feb6-95\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-21.69 L 127.58 -21.69\" id=\"img-ff04feb6-96\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-24.55 L 127.58 -24.55\" id=\"img-ff04feb6-97\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-27.42 L 127.58 -27.42\" id=\"img-ff04feb6-98\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-30.29 L 127.58 -30.29\" id=\"img-ff04feb6-99\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-33.16 L 127.58 -33.16\" id=\"img-ff04feb6-100\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-36.03 L 127.58 -36.03\" id=\"img-ff04feb6-101\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-38.9 L 127.58 -38.9\" id=\"img-ff04feb6-102\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-41.77 L 127.58 -41.77\" id=\"img-ff04feb6-103\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-44.63 L 127.58 -44.63\" id=\"img-ff04feb6-104\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-47.5 L 127.58 -47.5\" id=\"img-ff04feb6-105\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-50.37 L 127.58 -50.37\" id=\"img-ff04feb6-106\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-53.24 L 127.58 -53.24\" id=\"img-ff04feb6-107\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-56.11 L 127.58 -56.11\" id=\"img-ff04feb6-108\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-58.98 L 127.58 -58.98\" id=\"img-ff04feb6-109\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-61.85 L 127.58 -61.85\" id=\"img-ff04feb6-110\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-64.71 L 127.58 -64.71\" id=\"img-ff04feb6-111\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,164.77 L 127.58 164.77\" id=\"img-ff04feb6-112\" gadfly:scale=\"0.5\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,21.34 L 127.58 21.34\" id=\"img-ff04feb6-113\" gadfly:scale=\"0.5\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-122.09 L 127.58 -122.09\" id=\"img-ff04feb6-114\" gadfly:scale=\"0.5\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,153.3 L 127.58 153.3\" id=\"img-ff04feb6-115\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,147.56 L 127.58 147.56\" id=\"img-ff04feb6-116\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,141.82 L 127.58 141.82\" id=\"img-ff04feb6-117\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,136.09 L 127.58 136.09\" id=\"img-ff04feb6-118\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,130.35 L 127.58 130.35\" id=\"img-ff04feb6-119\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,124.61 L 127.58 124.61\" id=\"img-ff04feb6-120\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,118.88 L 127.58 118.88\" id=\"img-ff04feb6-121\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,113.14 L 127.58 113.14\" id=\"img-ff04feb6-122\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,107.4 L 127.58 107.4\" id=\"img-ff04feb6-123\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,101.66 L 127.58 101.66\" id=\"img-ff04feb6-124\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,95.93 L 127.58 95.93\" id=\"img-ff04feb6-125\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,90.19 L 127.58 90.19\" id=\"img-ff04feb6-126\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,84.45 L 127.58 84.45\" id=\"img-ff04feb6-127\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,78.72 L 127.58 78.72\" id=\"img-ff04feb6-128\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,72.98 L 127.58 72.98\" id=\"img-ff04feb6-129\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,67.24 L 127.58 67.24\" id=\"img-ff04feb6-130\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,61.5 L 127.58 61.5\" id=\"img-ff04feb6-131\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,55.77 L 127.58 55.77\" id=\"img-ff04feb6-132\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,50.03 L 127.58 50.03\" id=\"img-ff04feb6-133\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,44.29 L 127.58 44.29\" id=\"img-ff04feb6-134\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,38.55 L 127.58 38.55\" id=\"img-ff04feb6-135\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,32.82 L 127.58 32.82\" id=\"img-ff04feb6-136\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,27.08 L 127.58 27.08\" id=\"img-ff04feb6-137\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,21.34 L 127.58 21.34\" id=\"img-ff04feb6-138\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,15.61 L 127.58 15.61\" id=\"img-ff04feb6-139\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,9.87 L 127.58 9.87\" id=\"img-ff04feb6-140\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,4.13 L 127.58 4.13\" id=\"img-ff04feb6-141\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-1.61 L 127.58 -1.61\" id=\"img-ff04feb6-142\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-7.34 L 127.58 -7.34\" id=\"img-ff04feb6-143\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-13.08 L 127.58 -13.08\" id=\"img-ff04feb6-144\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-18.82 L 127.58 -18.82\" id=\"img-ff04feb6-145\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-24.55 L 127.58 -24.55\" id=\"img-ff04feb6-146\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-30.29 L 127.58 -30.29\" id=\"img-ff04feb6-147\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-36.03 L 127.58 -36.03\" id=\"img-ff04feb6-148\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-41.77 L 127.58 -41.77\" id=\"img-ff04feb6-149\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-47.5 L 127.58 -47.5\" id=\"img-ff04feb6-150\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-53.24 L 127.58 -53.24\" id=\"img-ff04feb6-151\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-58.98 L 127.58 -58.98\" id=\"img-ff04feb6-152\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M19.07,-64.71 L 127.58 -64.71\" id=\"img-ff04feb6-153\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "    </g>\n",
       "    <g class=\"guide xgridlines yfixed\" stroke-dasharray=\"0.5,0.5\" stroke-width=\"0.2\" stroke=\"#D0D0E0\" id=\"img-ff04feb6-154\">\n",
       "      <path fill=\"none\" d=\"M-100.86,5 L -100.86 80.72\" id=\"img-ff04feb6-155\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-83.44,5 L -83.44 80.72\" id=\"img-ff04feb6-156\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-66.02,5 L -66.02 80.72\" id=\"img-ff04feb6-157\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-48.6,5 L -48.6 80.72\" id=\"img-ff04feb6-158\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-31.18,5 L -31.18 80.72\" id=\"img-ff04feb6-159\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-13.77,5 L -13.77 80.72\" id=\"img-ff04feb6-160\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M3.65,5 L 3.65 80.72\" id=\"img-ff04feb6-161\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M21.07,5 L 21.07 80.72\" id=\"img-ff04feb6-162\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M38.49,5 L 38.49 80.72\" id=\"img-ff04feb6-163\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M55.91,5 L 55.91 80.72\" id=\"img-ff04feb6-164\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M73.33,5 L 73.33 80.72\" id=\"img-ff04feb6-165\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M90.75,5 L 90.75 80.72\" id=\"img-ff04feb6-166\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M108.17,5 L 108.17 80.72\" id=\"img-ff04feb6-167\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M125.58,5 L 125.58 80.72\" id=\"img-ff04feb6-168\" gadfly:scale=\"1.0\" visibility=\"visible\"/>\n",
       "      <path fill=\"none\" d=\"M143,5 L 143 80.72\" id=\"img-ff04feb6-169\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M160.42,5 L 160.42 80.72\" id=\"img-ff04feb6-170\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M177.84,5 L 177.84 80.72\" id=\"img-ff04feb6-171\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M195.26,5 L 195.26 80.72\" id=\"img-ff04feb6-172\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M212.68,5 L 212.68 80.72\" id=\"img-ff04feb6-173\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M230.1,5 L 230.1 80.72\" id=\"img-ff04feb6-174\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M247.52,5 L 247.52 80.72\" id=\"img-ff04feb6-175\" gadfly:scale=\"1.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-83.44,5 L -83.44 80.72\" id=\"img-ff04feb6-176\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-79.96,5 L -79.96 80.72\" id=\"img-ff04feb6-177\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-76.47,5 L -76.47 80.72\" id=\"img-ff04feb6-178\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-72.99,5 L -72.99 80.72\" id=\"img-ff04feb6-179\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-69.51,5 L -69.51 80.72\" id=\"img-ff04feb6-180\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-66.02,5 L -66.02 80.72\" id=\"img-ff04feb6-181\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-62.54,5 L -62.54 80.72\" id=\"img-ff04feb6-182\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-59.05,5 L -59.05 80.72\" id=\"img-ff04feb6-183\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-55.57,5 L -55.57 80.72\" id=\"img-ff04feb6-184\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-52.09,5 L -52.09 80.72\" id=\"img-ff04feb6-185\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-48.6,5 L -48.6 80.72\" id=\"img-ff04feb6-186\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-45.12,5 L -45.12 80.72\" id=\"img-ff04feb6-187\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-41.64,5 L -41.64 80.72\" id=\"img-ff04feb6-188\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-38.15,5 L -38.15 80.72\" id=\"img-ff04feb6-189\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-34.67,5 L -34.67 80.72\" id=\"img-ff04feb6-190\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-31.18,5 L -31.18 80.72\" id=\"img-ff04feb6-191\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-27.7,5 L -27.7 80.72\" id=\"img-ff04feb6-192\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-24.22,5 L -24.22 80.72\" id=\"img-ff04feb6-193\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-20.73,5 L -20.73 80.72\" id=\"img-ff04feb6-194\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-17.25,5 L -17.25 80.72\" id=\"img-ff04feb6-195\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-13.77,5 L -13.77 80.72\" id=\"img-ff04feb6-196\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-10.28,5 L -10.28 80.72\" id=\"img-ff04feb6-197\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-6.8,5 L -6.8 80.72\" id=\"img-ff04feb6-198\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-3.31,5 L -3.31 80.72\" id=\"img-ff04feb6-199\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M0.17,5 L 0.17 80.72\" id=\"img-ff04feb6-200\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M3.65,5 L 3.65 80.72\" id=\"img-ff04feb6-201\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M7.14,5 L 7.14 80.72\" id=\"img-ff04feb6-202\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M10.62,5 L 10.62 80.72\" id=\"img-ff04feb6-203\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M14.1,5 L 14.1 80.72\" id=\"img-ff04feb6-204\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M17.59,5 L 17.59 80.72\" id=\"img-ff04feb6-205\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M21.07,5 L 21.07 80.72\" id=\"img-ff04feb6-206\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M24.56,5 L 24.56 80.72\" id=\"img-ff04feb6-207\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M28.04,5 L 28.04 80.72\" id=\"img-ff04feb6-208\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M31.52,5 L 31.52 80.72\" id=\"img-ff04feb6-209\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M35.01,5 L 35.01 80.72\" id=\"img-ff04feb6-210\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M38.49,5 L 38.49 80.72\" id=\"img-ff04feb6-211\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M41.97,5 L 41.97 80.72\" id=\"img-ff04feb6-212\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M45.46,5 L 45.46 80.72\" id=\"img-ff04feb6-213\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M48.94,5 L 48.94 80.72\" id=\"img-ff04feb6-214\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M52.43,5 L 52.43 80.72\" id=\"img-ff04feb6-215\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M55.91,5 L 55.91 80.72\" id=\"img-ff04feb6-216\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M59.39,5 L 59.39 80.72\" id=\"img-ff04feb6-217\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M62.88,5 L 62.88 80.72\" id=\"img-ff04feb6-218\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M66.36,5 L 66.36 80.72\" id=\"img-ff04feb6-219\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M69.84,5 L 69.84 80.72\" id=\"img-ff04feb6-220\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M73.33,5 L 73.33 80.72\" id=\"img-ff04feb6-221\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M76.81,5 L 76.81 80.72\" id=\"img-ff04feb6-222\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M80.3,5 L 80.3 80.72\" id=\"img-ff04feb6-223\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M83.78,5 L 83.78 80.72\" id=\"img-ff04feb6-224\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M87.26,5 L 87.26 80.72\" id=\"img-ff04feb6-225\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M90.75,5 L 90.75 80.72\" id=\"img-ff04feb6-226\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M94.23,5 L 94.23 80.72\" id=\"img-ff04feb6-227\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M97.71,5 L 97.71 80.72\" id=\"img-ff04feb6-228\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M101.2,5 L 101.2 80.72\" id=\"img-ff04feb6-229\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M104.68,5 L 104.68 80.72\" id=\"img-ff04feb6-230\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M108.17,5 L 108.17 80.72\" id=\"img-ff04feb6-231\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M111.65,5 L 111.65 80.72\" id=\"img-ff04feb6-232\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M115.13,5 L 115.13 80.72\" id=\"img-ff04feb6-233\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M118.62,5 L 118.62 80.72\" id=\"img-ff04feb6-234\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M122.1,5 L 122.1 80.72\" id=\"img-ff04feb6-235\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M125.58,5 L 125.58 80.72\" id=\"img-ff04feb6-236\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M129.07,5 L 129.07 80.72\" id=\"img-ff04feb6-237\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M132.55,5 L 132.55 80.72\" id=\"img-ff04feb6-238\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M136.04,5 L 136.04 80.72\" id=\"img-ff04feb6-239\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M139.52,5 L 139.52 80.72\" id=\"img-ff04feb6-240\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M143,5 L 143 80.72\" id=\"img-ff04feb6-241\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M146.49,5 L 146.49 80.72\" id=\"img-ff04feb6-242\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M149.97,5 L 149.97 80.72\" id=\"img-ff04feb6-243\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M153.45,5 L 153.45 80.72\" id=\"img-ff04feb6-244\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M156.94,5 L 156.94 80.72\" id=\"img-ff04feb6-245\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M160.42,5 L 160.42 80.72\" id=\"img-ff04feb6-246\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M163.91,5 L 163.91 80.72\" id=\"img-ff04feb6-247\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M167.39,5 L 167.39 80.72\" id=\"img-ff04feb6-248\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M170.87,5 L 170.87 80.72\" id=\"img-ff04feb6-249\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M174.36,5 L 174.36 80.72\" id=\"img-ff04feb6-250\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M177.84,5 L 177.84 80.72\" id=\"img-ff04feb6-251\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M181.32,5 L 181.32 80.72\" id=\"img-ff04feb6-252\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M184.81,5 L 184.81 80.72\" id=\"img-ff04feb6-253\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M188.29,5 L 188.29 80.72\" id=\"img-ff04feb6-254\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M191.78,5 L 191.78 80.72\" id=\"img-ff04feb6-255\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M195.26,5 L 195.26 80.72\" id=\"img-ff04feb6-256\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M198.74,5 L 198.74 80.72\" id=\"img-ff04feb6-257\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M202.23,5 L 202.23 80.72\" id=\"img-ff04feb6-258\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M205.71,5 L 205.71 80.72\" id=\"img-ff04feb6-259\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M209.2,5 L 209.2 80.72\" id=\"img-ff04feb6-260\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M212.68,5 L 212.68 80.72\" id=\"img-ff04feb6-261\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M216.16,5 L 216.16 80.72\" id=\"img-ff04feb6-262\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M219.65,5 L 219.65 80.72\" id=\"img-ff04feb6-263\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M223.13,5 L 223.13 80.72\" id=\"img-ff04feb6-264\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M226.61,5 L 226.61 80.72\" id=\"img-ff04feb6-265\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M230.1,5 L 230.1 80.72\" id=\"img-ff04feb6-266\" gadfly:scale=\"10.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-100.86,5 L -100.86 80.72\" id=\"img-ff04feb6-267\" gadfly:scale=\"0.5\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-13.77,5 L -13.77 80.72\" id=\"img-ff04feb6-268\" gadfly:scale=\"0.5\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M73.33,5 L 73.33 80.72\" id=\"img-ff04feb6-269\" gadfly:scale=\"0.5\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M160.42,5 L 160.42 80.72\" id=\"img-ff04feb6-270\" gadfly:scale=\"0.5\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M247.52,5 L 247.52 80.72\" id=\"img-ff04feb6-271\" gadfly:scale=\"0.5\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-83.44,5 L -83.44 80.72\" id=\"img-ff04feb6-272\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-74.73,5 L -74.73 80.72\" id=\"img-ff04feb6-273\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-66.02,5 L -66.02 80.72\" id=\"img-ff04feb6-274\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-57.31,5 L -57.31 80.72\" id=\"img-ff04feb6-275\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-48.6,5 L -48.6 80.72\" id=\"img-ff04feb6-276\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-39.89,5 L -39.89 80.72\" id=\"img-ff04feb6-277\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-31.18,5 L -31.18 80.72\" id=\"img-ff04feb6-278\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-22.48,5 L -22.48 80.72\" id=\"img-ff04feb6-279\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-13.77,5 L -13.77 80.72\" id=\"img-ff04feb6-280\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M-5.06,5 L -5.06 80.72\" id=\"img-ff04feb6-281\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M3.65,5 L 3.65 80.72\" id=\"img-ff04feb6-282\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M12.36,5 L 12.36 80.72\" id=\"img-ff04feb6-283\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M21.07,5 L 21.07 80.72\" id=\"img-ff04feb6-284\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M29.78,5 L 29.78 80.72\" id=\"img-ff04feb6-285\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M38.49,5 L 38.49 80.72\" id=\"img-ff04feb6-286\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M47.2,5 L 47.2 80.72\" id=\"img-ff04feb6-287\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M55.91,5 L 55.91 80.72\" id=\"img-ff04feb6-288\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M64.62,5 L 64.62 80.72\" id=\"img-ff04feb6-289\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M73.33,5 L 73.33 80.72\" id=\"img-ff04feb6-290\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M82.04,5 L 82.04 80.72\" id=\"img-ff04feb6-291\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M90.75,5 L 90.75 80.72\" id=\"img-ff04feb6-292\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M99.46,5 L 99.46 80.72\" id=\"img-ff04feb6-293\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M108.17,5 L 108.17 80.72\" id=\"img-ff04feb6-294\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M116.88,5 L 116.88 80.72\" id=\"img-ff04feb6-295\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M125.58,5 L 125.58 80.72\" id=\"img-ff04feb6-296\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M134.29,5 L 134.29 80.72\" id=\"img-ff04feb6-297\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M143,5 L 143 80.72\" id=\"img-ff04feb6-298\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M151.71,5 L 151.71 80.72\" id=\"img-ff04feb6-299\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M160.42,5 L 160.42 80.72\" id=\"img-ff04feb6-300\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M169.13,5 L 169.13 80.72\" id=\"img-ff04feb6-301\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M177.84,5 L 177.84 80.72\" id=\"img-ff04feb6-302\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M186.55,5 L 186.55 80.72\" id=\"img-ff04feb6-303\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M195.26,5 L 195.26 80.72\" id=\"img-ff04feb6-304\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M203.97,5 L 203.97 80.72\" id=\"img-ff04feb6-305\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M212.68,5 L 212.68 80.72\" id=\"img-ff04feb6-306\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M221.39,5 L 221.39 80.72\" id=\"img-ff04feb6-307\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "      <path fill=\"none\" d=\"M230.1,5 L 230.1 80.72\" id=\"img-ff04feb6-308\" gadfly:scale=\"5.0\" visibility=\"hidden\"/>\n",
       "    </g>\n",
       "    <g class=\"plotpanel\" id=\"img-ff04feb6-309\">\n",
       "      <g stroke-width=\"0.3\" fill=\"#000000\" fill-opacity=\"0.000\" stroke-dasharray=\"none\" id=\"img-ff04feb6-310\">\n",
       "        <path fill=\"none\" d=\"M21.07,29.47 L 21.49 30.62 21.91 31.7 22.33 32.72 22.75 33.68 23.17 34.58 23.59 35.42 24.01 36.2 24.43 36.94 24.85 37.62 25.27 38.25 25.69 38.83 26.11 39.36 26.53 39.85 26.95 40.29 27.37 40.69 27.79 41.06 28.21 41.38 28.63 41.66 29.05 41.91 29.47 42.12 29.89 42.3 30.31 42.45 30.73 42.56 31.15 42.65 31.56 42.71 31.98 42.74 32.4 42.74 32.82 42.72 33.24 42.68 33.66 42.62 34.08 42.53 34.5 42.43 34.92 42.3 35.34 42.16 35.76 42 36.18 41.82 36.6 41.63 37.02 41.43 37.44 41.21 37.86 40.98 38.28 40.74 38.7 40.49 39.12 40.23 39.54 39.96 39.96 39.68 40.38 39.39 40.8 39.1 41.22 38.8 41.64 38.49 42.06 38.18 42.48 37.87 42.9 37.55 43.32 37.22 43.74 36.9 44.16 36.57 44.58 36.24 45 35.91 45.42 35.58 45.84 35.25 46.26 34.91 46.68 34.58 47.09 34.25 47.51 33.92 47.93 33.59 48.35 33.26 48.77 32.94 49.19 32.61 49.61 32.29 50.03 31.97 50.45 31.66 50.87 31.34 51.29 31.04 51.71 30.73 52.13 30.43 52.55 30.13 52.97 29.84 53.39 29.55 53.81 29.26 54.23 28.98 54.65 28.71 55.07 28.43 55.49 28.17 55.91 27.9 56.33 27.65 56.75 27.4 57.17 27.15 57.59 26.91 58.01 26.67 58.43 26.44 58.85 26.21 59.27 25.99 59.69 25.77 60.11 25.56 60.53 25.35 60.95 25.15 61.37 24.96 61.79 24.77 62.21 24.58 62.63 24.4 63.04 24.22 63.46 24.05 63.88 23.89 64.3 23.73 64.72 23.57 65.14 23.42 65.56 23.27 65.98 23.13 66.4 23 66.82 22.86 67.24 22.74 67.66 22.61 68.08 22.49 68.5 22.38 68.92 22.27 69.34 22.16 69.76 22.06 70.18 21.96 70.6 21.87 71.02 21.78 71.44 21.69 71.86 21.61 72.28 21.53 72.7 21.45 73.12 21.38 73.54 21.31 73.96 21.24 74.38 21.18 74.8 21.12 75.22 21.06 75.64 21.01 76.06 20.96 76.48 20.91 76.9 20.87 77.32 20.83 77.74 20.79 78.16 20.75 78.57 20.71 78.99 20.68 79.41 20.65 79.83 20.62 80.25 20.6 80.67 20.57 81.09 20.55 81.51 20.53 81.93 20.51 82.35 20.5 82.77 20.48 83.19 20.47 83.61 20.46 84.03 20.45 84.45 20.44 84.87 20.43 85.29 20.43 85.71 20.42 86.13 20.42 86.55 20.42 86.97 20.42 87.39 20.42 87.81 20.42 88.23 20.42 88.65 20.43 89.07 20.43 89.49 20.44 89.91 20.44 90.33 20.45 90.75 20.45 91.17 20.46 91.59 20.47 92.01 20.48 92.43 20.49 92.85 20.5 93.27 20.51 93.69 20.52 94.1 20.53 94.52 20.55 94.94 20.56 95.36 20.57 95.78 20.58 96.2 20.6 96.62 20.61 97.04 20.62 97.46 20.64 97.88 20.65 98.3 20.67 98.72 20.68 99.14 20.69 99.56 20.71 99.98 20.72 100.4 20.74 100.82 20.75 101.24 20.77 101.66 20.78 102.08 20.79 102.5 20.81 102.92 20.82 103.34 20.84 103.76 20.85 104.18 20.86 104.6 20.88 105.02 20.89 105.44 20.91 105.86 20.92 106.28 20.93 106.7 20.95 107.12 20.96 107.54 20.97 107.96 20.98 108.38 21 108.8 21.01 109.22 21.02 109.63 21.03 110.05 21.04 110.47 21.06 110.89 21.07 111.31 21.08 111.73 21.09 112.15 21.1 112.57 21.11 112.99 21.12 113.41 21.13 113.83 21.14 114.25 21.15 114.67 21.16 115.09 21.17 115.51 21.18 115.93 21.18 116.35 21.19 116.77 21.2 117.19 21.21 117.61 21.22 118.03 21.22 118.45 21.23 118.87 21.24 119.29 21.24 119.71 21.25 120.13 21.26 120.55 21.26 120.97 21.27 121.39 21.28 121.81 21.28 122.23 21.29 122.65 21.29 123.07 21.3 123.49 21.3 123.91 21.31 124.33 21.31 124.75 21.31 125.16 21.32 125.58 21.32\" id=\"img-ff04feb6-311\" stroke=\"#00BFFF\" class=\"geometry color_f1\"/>\n",
       "        <path fill=\"none\" d=\"M21.07,70.25 L 21.49 67.54 21.91 64.91 22.33 62.34 22.75 59.86 23.17 57.44 23.59 55.1 24.01 52.83 24.43 50.63 24.85 48.51 25.27 46.45 25.69 44.46 26.11 42.53 26.53 40.68 26.95 38.89 27.37 37.16 27.79 35.5 28.21 33.9 28.63 32.35 29.05 30.87 29.47 29.45 29.89 28.09 30.31 26.78 30.73 25.53 31.15 24.33 31.56 23.19 31.98 22.1 32.4 21.05 32.82 20.06 33.24 19.12 33.66 18.22 34.08 17.37 34.5 16.56 34.92 15.8 35.34 15.07 35.76 14.39 36.18 13.75 36.6 13.15 37.02 12.59 37.44 12.06 37.86 11.57 38.28 11.11 38.7 10.68 39.12 10.29 39.54 9.93 39.96 9.59 40.38 9.29 40.8 9.02 41.22 8.77 41.64 8.55 42.06 8.35 42.48 8.17 42.9 8.02 43.32 7.9 43.74 7.79 44.16 7.7 44.58 7.64 45 7.59 45.42 7.56 45.84 7.54 46.26 7.55 46.68 7.57 47.09 7.6 47.51 7.65 47.93 7.71 48.35 7.78 48.77 7.87 49.19 7.96 49.61 8.07 50.03 8.19 50.45 8.31 50.87 8.45 51.29 8.59 51.71 8.74 52.13 8.9 52.55 9.07 52.97 9.24 53.39 9.41 53.81 9.6 54.23 9.78 54.65 9.97 55.07 10.17 55.49 10.37 55.91 10.57 56.33 10.77 56.75 10.98 57.17 11.19 57.59 11.4 58.01 11.61 58.43 11.82 58.85 12.04 59.27 12.25 59.69 12.47 60.11 12.68 60.53 12.89 60.95 13.11 61.37 13.32 61.79 13.53 62.21 13.74 62.63 13.95 63.04 14.16 63.46 14.37 63.88 14.57 64.3 14.77 64.72 14.97 65.14 15.17 65.56 15.37 65.98 15.56 66.4 15.75 66.82 15.94 67.24 16.13 67.66 16.31 68.08 16.49 68.5 16.67 68.92 16.84 69.34 17.01 69.76 17.18 70.18 17.34 70.6 17.51 71.02 17.66 71.44 17.82 71.86 17.97 72.28 18.12 72.7 18.26 73.12 18.4 73.54 18.54 73.96 18.68 74.38 18.81 74.8 18.94 75.22 19.06 75.64 19.18 76.06 19.3 76.48 19.42 76.9 19.53 77.32 19.64 77.74 19.74 78.16 19.85 78.57 19.95 78.99 20.04 79.41 20.13 79.83 20.23 80.25 20.31 80.67 20.4 81.09 20.48 81.51 20.56 81.93 20.63 82.35 20.7 82.77 20.77 83.19 20.84 83.61 20.91 84.03 20.97 84.45 21.03 84.87 21.09 85.29 21.14 85.71 21.19 86.13 21.24 86.55 21.29 86.97 21.34 87.39 21.38 87.81 21.42 88.23 21.46 88.65 21.5 89.07 21.54 89.49 21.57 89.91 21.6 90.33 21.63 90.75 21.66 91.17 21.69 91.59 21.71 92.01 21.74 92.43 21.76 92.85 21.78 93.27 21.8 93.69 21.81 94.1 21.83 94.52 21.85 94.94 21.86 95.36 21.87 95.78 21.88 96.2 21.89 96.62 21.9 97.04 21.91 97.46 21.92 97.88 21.92 98.3 21.93 98.72 21.93 99.14 21.93 99.56 21.94 99.98 21.94 100.4 21.94 100.82 21.94 101.24 21.94 101.66 21.94 102.08 21.94 102.5 21.93 102.92 21.93 103.34 21.93 103.76 21.92 104.18 21.92 104.6 21.91 105.02 21.91 105.44 21.9 105.86 21.9 106.28 21.89 106.7 21.88 107.12 21.88 107.54 21.87 107.96 21.86 108.38 21.85 108.8 21.85 109.22 21.84 109.63 21.83 110.05 21.82 110.47 21.81 110.89 21.8 111.31 21.79 111.73 21.79 112.15 21.78 112.57 21.77 112.99 21.76 113.41 21.75 113.83 21.74 114.25 21.73 114.67 21.72 115.09 21.71 115.51 21.7 115.93 21.69 116.35 21.68 116.77 21.67 117.19 21.67 117.61 21.66 118.03 21.65 118.45 21.64 118.87 21.63 119.29 21.62 119.71 21.61 120.13 21.6 120.55 21.6 120.97 21.59 121.39 21.58 121.81 21.57 122.23 21.56 122.65 21.56 123.07 21.55 123.49 21.54 123.91 21.53 124.33 21.53 124.75 21.52 125.16 21.51 125.58 21.5\" id=\"img-ff04feb6-312\" stroke=\"#D4CA3A\" class=\"geometry color_f2\"/>\n",
       "      </g>\n",
       "    </g>\n",
       "    <g opacity=\"0\" class=\"guide zoomslider\" stroke=\"#000000\" stroke-opacity=\"0.000\" id=\"img-ff04feb6-313\">\n",
       "      <g fill=\"#EAEAEA\" stroke-width=\"0.3\" stroke-opacity=\"0\" stroke=\"#6A6A6A\" id=\"img-ff04feb6-314\">\n",
       "        <rect x=\"120.58\" y=\"8\" width=\"4\" height=\"4\" id=\"img-ff04feb6-315\"/>\n",
       "        <g class=\"button_logo\" fill=\"#6A6A6A\" id=\"img-ff04feb6-316\">\n",
       "          <path d=\"M121.38,9.6 L 122.18 9.6 122.18 8.8 122.98 8.8 122.98 9.6 123.78 9.6 123.78 10.4 122.98 10.4 122.98 11.2 122.18 11.2 122.18 10.4 121.38 10.4 z\" id=\"img-ff04feb6-317\"/>\n",
       "        </g>\n",
       "      </g>\n",
       "      <g fill=\"#EAEAEA\" id=\"img-ff04feb6-318\">\n",
       "        <rect x=\"101.08\" y=\"8\" width=\"19\" height=\"4\" id=\"img-ff04feb6-319\"/>\n",
       "      </g>\n",
       "      <g class=\"zoomslider_thumb\" fill=\"#6A6A6A\" id=\"img-ff04feb6-320\">\n",
       "        <rect x=\"109.58\" y=\"8\" width=\"2\" height=\"4\" id=\"img-ff04feb6-321\"/>\n",
       "      </g>\n",
       "      <g fill=\"#EAEAEA\" stroke-width=\"0.3\" stroke-opacity=\"0\" stroke=\"#6A6A6A\" id=\"img-ff04feb6-322\">\n",
       "        <rect x=\"96.58\" y=\"8\" width=\"4\" height=\"4\" id=\"img-ff04feb6-323\"/>\n",
       "        <g class=\"button_logo\" fill=\"#6A6A6A\" id=\"img-ff04feb6-324\">\n",
       "          <path d=\"M97.38,9.6 L 99.78 9.6 99.78 10.4 97.38 10.4 z\" id=\"img-ff04feb6-325\"/>\n",
       "        </g>\n",
       "      </g>\n",
       "    </g>\n",
       "  </g>\n",
       "</g>\n",
       "  <g class=\"guide ylabels\" font-size=\"2.82\" font-family=\"'PT Sans Caption','Helvetica Neue','Helvetica',sans-serif\" fill=\"#6C606B\" id=\"img-ff04feb6-326\">\n",
       "    <text x=\"18.07\" y=\"164.77\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-327\" gadfly:scale=\"1.0\" visibility=\"hidden\">-50</text>\n",
       "    <text x=\"18.07\" y=\"150.43\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-328\" gadfly:scale=\"1.0\" visibility=\"hidden\">-45</text>\n",
       "    <text x=\"18.07\" y=\"136.09\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-329\" gadfly:scale=\"1.0\" visibility=\"hidden\">-40</text>\n",
       "    <text x=\"18.07\" y=\"121.74\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-330\" gadfly:scale=\"1.0\" visibility=\"hidden\">-35</text>\n",
       "    <text x=\"18.07\" y=\"107.4\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-331\" gadfly:scale=\"1.0\" visibility=\"hidden\">-30</text>\n",
       "    <text x=\"18.07\" y=\"93.06\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-332\" gadfly:scale=\"1.0\" visibility=\"hidden\">-25</text>\n",
       "    <text x=\"18.07\" y=\"78.72\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-333\" gadfly:scale=\"1.0\" visibility=\"visible\">-20</text>\n",
       "    <text x=\"18.07\" y=\"64.37\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-334\" gadfly:scale=\"1.0\" visibility=\"visible\">-15</text>\n",
       "    <text x=\"18.07\" y=\"50.03\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-335\" gadfly:scale=\"1.0\" visibility=\"visible\">-10</text>\n",
       "    <text x=\"18.07\" y=\"35.69\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-336\" gadfly:scale=\"1.0\" visibility=\"visible\">-5</text>\n",
       "    <text x=\"18.07\" y=\"21.34\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-337\" gadfly:scale=\"1.0\" visibility=\"visible\">0</text>\n",
       "    <text x=\"18.07\" y=\"7\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-338\" gadfly:scale=\"1.0\" visibility=\"visible\">5</text>\n",
       "    <text x=\"18.07\" y=\"-7.34\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-339\" gadfly:scale=\"1.0\" visibility=\"hidden\">10</text>\n",
       "    <text x=\"18.07\" y=\"-21.69\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-340\" gadfly:scale=\"1.0\" visibility=\"hidden\">15</text>\n",
       "    <text x=\"18.07\" y=\"-36.03\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-341\" gadfly:scale=\"1.0\" visibility=\"hidden\">20</text>\n",
       "    <text x=\"18.07\" y=\"-50.37\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-342\" gadfly:scale=\"1.0\" visibility=\"hidden\">25</text>\n",
       "    <text x=\"18.07\" y=\"-64.71\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-343\" gadfly:scale=\"1.0\" visibility=\"hidden\">30</text>\n",
       "    <text x=\"18.07\" y=\"-79.06\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-344\" gadfly:scale=\"1.0\" visibility=\"hidden\">35</text>\n",
       "    <text x=\"18.07\" y=\"150.43\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-345\" gadfly:scale=\"10.0\" visibility=\"hidden\">-45</text>\n",
       "    <text x=\"18.07\" y=\"147.56\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-346\" gadfly:scale=\"10.0\" visibility=\"hidden\">-44</text>\n",
       "    <text x=\"18.07\" y=\"144.69\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-347\" gadfly:scale=\"10.0\" visibility=\"hidden\">-43</text>\n",
       "    <text x=\"18.07\" y=\"141.82\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-348\" gadfly:scale=\"10.0\" visibility=\"hidden\">-42</text>\n",
       "    <text x=\"18.07\" y=\"138.96\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-349\" gadfly:scale=\"10.0\" visibility=\"hidden\">-41</text>\n",
       "    <text x=\"18.07\" y=\"136.09\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-350\" gadfly:scale=\"10.0\" visibility=\"hidden\">-40</text>\n",
       "    <text x=\"18.07\" y=\"133.22\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-351\" gadfly:scale=\"10.0\" visibility=\"hidden\">-39</text>\n",
       "    <text x=\"18.07\" y=\"130.35\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-352\" gadfly:scale=\"10.0\" visibility=\"hidden\">-38</text>\n",
       "    <text x=\"18.07\" y=\"127.48\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-353\" gadfly:scale=\"10.0\" visibility=\"hidden\">-37</text>\n",
       "    <text x=\"18.07\" y=\"124.61\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-354\" gadfly:scale=\"10.0\" visibility=\"hidden\">-36</text>\n",
       "    <text x=\"18.07\" y=\"121.74\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-355\" gadfly:scale=\"10.0\" visibility=\"hidden\">-35</text>\n",
       "    <text x=\"18.07\" y=\"118.88\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-356\" gadfly:scale=\"10.0\" visibility=\"hidden\">-34</text>\n",
       "    <text x=\"18.07\" y=\"116.01\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-357\" gadfly:scale=\"10.0\" visibility=\"hidden\">-33</text>\n",
       "    <text x=\"18.07\" y=\"113.14\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-358\" gadfly:scale=\"10.0\" visibility=\"hidden\">-32</text>\n",
       "    <text x=\"18.07\" y=\"110.27\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-359\" gadfly:scale=\"10.0\" visibility=\"hidden\">-31</text>\n",
       "    <text x=\"18.07\" y=\"107.4\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-360\" gadfly:scale=\"10.0\" visibility=\"hidden\">-30</text>\n",
       "    <text x=\"18.07\" y=\"104.53\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-361\" gadfly:scale=\"10.0\" visibility=\"hidden\">-29</text>\n",
       "    <text x=\"18.07\" y=\"101.66\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-362\" gadfly:scale=\"10.0\" visibility=\"hidden\">-28</text>\n",
       "    <text x=\"18.07\" y=\"98.8\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-363\" gadfly:scale=\"10.0\" visibility=\"hidden\">-27</text>\n",
       "    <text x=\"18.07\" y=\"95.93\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-364\" gadfly:scale=\"10.0\" visibility=\"hidden\">-26</text>\n",
       "    <text x=\"18.07\" y=\"93.06\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-365\" gadfly:scale=\"10.0\" visibility=\"hidden\">-25</text>\n",
       "    <text x=\"18.07\" y=\"90.19\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-366\" gadfly:scale=\"10.0\" visibility=\"hidden\">-24</text>\n",
       "    <text x=\"18.07\" y=\"87.32\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-367\" gadfly:scale=\"10.0\" visibility=\"hidden\">-23</text>\n",
       "    <text x=\"18.07\" y=\"84.45\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-368\" gadfly:scale=\"10.0\" visibility=\"hidden\">-22</text>\n",
       "    <text x=\"18.07\" y=\"81.58\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-369\" gadfly:scale=\"10.0\" visibility=\"hidden\">-21</text>\n",
       "    <text x=\"18.07\" y=\"78.72\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-370\" gadfly:scale=\"10.0\" visibility=\"hidden\">-20</text>\n",
       "    <text x=\"18.07\" y=\"75.85\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-371\" gadfly:scale=\"10.0\" visibility=\"hidden\">-19</text>\n",
       "    <text x=\"18.07\" y=\"72.98\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-372\" gadfly:scale=\"10.0\" visibility=\"hidden\">-18</text>\n",
       "    <text x=\"18.07\" y=\"70.11\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-373\" gadfly:scale=\"10.0\" visibility=\"hidden\">-17</text>\n",
       "    <text x=\"18.07\" y=\"67.24\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-374\" gadfly:scale=\"10.0\" visibility=\"hidden\">-16</text>\n",
       "    <text x=\"18.07\" y=\"64.37\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-375\" gadfly:scale=\"10.0\" visibility=\"hidden\">-15</text>\n",
       "    <text x=\"18.07\" y=\"61.5\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-376\" gadfly:scale=\"10.0\" visibility=\"hidden\">-14</text>\n",
       "    <text x=\"18.07\" y=\"58.63\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-377\" gadfly:scale=\"10.0\" visibility=\"hidden\">-13</text>\n",
       "    <text x=\"18.07\" y=\"55.77\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-378\" gadfly:scale=\"10.0\" visibility=\"hidden\">-12</text>\n",
       "    <text x=\"18.07\" y=\"52.9\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-379\" gadfly:scale=\"10.0\" visibility=\"hidden\">-11</text>\n",
       "    <text x=\"18.07\" y=\"50.03\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-380\" gadfly:scale=\"10.0\" visibility=\"hidden\">-10</text>\n",
       "    <text x=\"18.07\" y=\"47.16\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-381\" gadfly:scale=\"10.0\" visibility=\"hidden\">-9</text>\n",
       "    <text x=\"18.07\" y=\"44.29\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-382\" gadfly:scale=\"10.0\" visibility=\"hidden\">-8</text>\n",
       "    <text x=\"18.07\" y=\"41.42\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-383\" gadfly:scale=\"10.0\" visibility=\"hidden\">-7</text>\n",
       "    <text x=\"18.07\" y=\"38.55\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-384\" gadfly:scale=\"10.0\" visibility=\"hidden\">-6</text>\n",
       "    <text x=\"18.07\" y=\"35.69\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-385\" gadfly:scale=\"10.0\" visibility=\"hidden\">-5</text>\n",
       "    <text x=\"18.07\" y=\"32.82\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-386\" gadfly:scale=\"10.0\" visibility=\"hidden\">-4</text>\n",
       "    <text x=\"18.07\" y=\"29.95\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-387\" gadfly:scale=\"10.0\" visibility=\"hidden\">-3</text>\n",
       "    <text x=\"18.07\" y=\"27.08\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-388\" gadfly:scale=\"10.0\" visibility=\"hidden\">-2</text>\n",
       "    <text x=\"18.07\" y=\"24.21\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-389\" gadfly:scale=\"10.0\" visibility=\"hidden\">-1</text>\n",
       "    <text x=\"18.07\" y=\"21.34\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-390\" gadfly:scale=\"10.0\" visibility=\"hidden\">0</text>\n",
       "    <text x=\"18.07\" y=\"18.47\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-391\" gadfly:scale=\"10.0\" visibility=\"hidden\">1</text>\n",
       "    <text x=\"18.07\" y=\"15.61\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-392\" gadfly:scale=\"10.0\" visibility=\"hidden\">2</text>\n",
       "    <text x=\"18.07\" y=\"12.74\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-393\" gadfly:scale=\"10.0\" visibility=\"hidden\">3</text>\n",
       "    <text x=\"18.07\" y=\"9.87\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-394\" gadfly:scale=\"10.0\" visibility=\"hidden\">4</text>\n",
       "    <text x=\"18.07\" y=\"7\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-395\" gadfly:scale=\"10.0\" visibility=\"hidden\">5</text>\n",
       "    <text x=\"18.07\" y=\"4.13\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-396\" gadfly:scale=\"10.0\" visibility=\"hidden\">6</text>\n",
       "    <text x=\"18.07\" y=\"1.26\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-397\" gadfly:scale=\"10.0\" visibility=\"hidden\">7</text>\n",
       "    <text x=\"18.07\" y=\"-1.61\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-398\" gadfly:scale=\"10.0\" visibility=\"hidden\">8</text>\n",
       "    <text x=\"18.07\" y=\"-4.47\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-399\" gadfly:scale=\"10.0\" visibility=\"hidden\">9</text>\n",
       "    <text x=\"18.07\" y=\"-7.34\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-400\" gadfly:scale=\"10.0\" visibility=\"hidden\">10</text>\n",
       "    <text x=\"18.07\" y=\"-10.21\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-401\" gadfly:scale=\"10.0\" visibility=\"hidden\">11</text>\n",
       "    <text x=\"18.07\" y=\"-13.08\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-402\" gadfly:scale=\"10.0\" visibility=\"hidden\">12</text>\n",
       "    <text x=\"18.07\" y=\"-15.95\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-403\" gadfly:scale=\"10.0\" visibility=\"hidden\">13</text>\n",
       "    <text x=\"18.07\" y=\"-18.82\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-404\" gadfly:scale=\"10.0\" visibility=\"hidden\">14</text>\n",
       "    <text x=\"18.07\" y=\"-21.69\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-405\" gadfly:scale=\"10.0\" visibility=\"hidden\">15</text>\n",
       "    <text x=\"18.07\" y=\"-24.55\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-406\" gadfly:scale=\"10.0\" visibility=\"hidden\">16</text>\n",
       "    <text x=\"18.07\" y=\"-27.42\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-407\" gadfly:scale=\"10.0\" visibility=\"hidden\">17</text>\n",
       "    <text x=\"18.07\" y=\"-30.29\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-408\" gadfly:scale=\"10.0\" visibility=\"hidden\">18</text>\n",
       "    <text x=\"18.07\" y=\"-33.16\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-409\" gadfly:scale=\"10.0\" visibility=\"hidden\">19</text>\n",
       "    <text x=\"18.07\" y=\"-36.03\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-410\" gadfly:scale=\"10.0\" visibility=\"hidden\">20</text>\n",
       "    <text x=\"18.07\" y=\"-38.9\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-411\" gadfly:scale=\"10.0\" visibility=\"hidden\">21</text>\n",
       "    <text x=\"18.07\" y=\"-41.77\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-412\" gadfly:scale=\"10.0\" visibility=\"hidden\">22</text>\n",
       "    <text x=\"18.07\" y=\"-44.63\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-413\" gadfly:scale=\"10.0\" visibility=\"hidden\">23</text>\n",
       "    <text x=\"18.07\" y=\"-47.5\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-414\" gadfly:scale=\"10.0\" visibility=\"hidden\">24</text>\n",
       "    <text x=\"18.07\" y=\"-50.37\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-415\" gadfly:scale=\"10.0\" visibility=\"hidden\">25</text>\n",
       "    <text x=\"18.07\" y=\"-53.24\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-416\" gadfly:scale=\"10.0\" visibility=\"hidden\">26</text>\n",
       "    <text x=\"18.07\" y=\"-56.11\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-417\" gadfly:scale=\"10.0\" visibility=\"hidden\">27</text>\n",
       "    <text x=\"18.07\" y=\"-58.98\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-418\" gadfly:scale=\"10.0\" visibility=\"hidden\">28</text>\n",
       "    <text x=\"18.07\" y=\"-61.85\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-419\" gadfly:scale=\"10.0\" visibility=\"hidden\">29</text>\n",
       "    <text x=\"18.07\" y=\"-64.71\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-420\" gadfly:scale=\"10.0\" visibility=\"hidden\">30</text>\n",
       "    <text x=\"18.07\" y=\"164.77\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-421\" gadfly:scale=\"0.5\" visibility=\"hidden\">-50</text>\n",
       "    <text x=\"18.07\" y=\"21.34\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-422\" gadfly:scale=\"0.5\" visibility=\"hidden\">0</text>\n",
       "    <text x=\"18.07\" y=\"-122.09\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-423\" gadfly:scale=\"0.5\" visibility=\"hidden\">50</text>\n",
       "    <text x=\"18.07\" y=\"153.3\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-424\" gadfly:scale=\"5.0\" visibility=\"hidden\">-46</text>\n",
       "    <text x=\"18.07\" y=\"147.56\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-425\" gadfly:scale=\"5.0\" visibility=\"hidden\">-44</text>\n",
       "    <text x=\"18.07\" y=\"141.82\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-426\" gadfly:scale=\"5.0\" visibility=\"hidden\">-42</text>\n",
       "    <text x=\"18.07\" y=\"136.09\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-427\" gadfly:scale=\"5.0\" visibility=\"hidden\">-40</text>\n",
       "    <text x=\"18.07\" y=\"130.35\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-428\" gadfly:scale=\"5.0\" visibility=\"hidden\">-38</text>\n",
       "    <text x=\"18.07\" y=\"124.61\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-429\" gadfly:scale=\"5.0\" visibility=\"hidden\">-36</text>\n",
       "    <text x=\"18.07\" y=\"118.88\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-430\" gadfly:scale=\"5.0\" visibility=\"hidden\">-34</text>\n",
       "    <text x=\"18.07\" y=\"113.14\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-431\" gadfly:scale=\"5.0\" visibility=\"hidden\">-32</text>\n",
       "    <text x=\"18.07\" y=\"107.4\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-432\" gadfly:scale=\"5.0\" visibility=\"hidden\">-30</text>\n",
       "    <text x=\"18.07\" y=\"101.66\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-433\" gadfly:scale=\"5.0\" visibility=\"hidden\">-28</text>\n",
       "    <text x=\"18.07\" y=\"95.93\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-434\" gadfly:scale=\"5.0\" visibility=\"hidden\">-26</text>\n",
       "    <text x=\"18.07\" y=\"90.19\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-435\" gadfly:scale=\"5.0\" visibility=\"hidden\">-24</text>\n",
       "    <text x=\"18.07\" y=\"84.45\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-436\" gadfly:scale=\"5.0\" visibility=\"hidden\">-22</text>\n",
       "    <text x=\"18.07\" y=\"78.72\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-437\" gadfly:scale=\"5.0\" visibility=\"hidden\">-20</text>\n",
       "    <text x=\"18.07\" y=\"72.98\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-438\" gadfly:scale=\"5.0\" visibility=\"hidden\">-18</text>\n",
       "    <text x=\"18.07\" y=\"67.24\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-439\" gadfly:scale=\"5.0\" visibility=\"hidden\">-16</text>\n",
       "    <text x=\"18.07\" y=\"61.5\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-440\" gadfly:scale=\"5.0\" visibility=\"hidden\">-14</text>\n",
       "    <text x=\"18.07\" y=\"55.77\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-441\" gadfly:scale=\"5.0\" visibility=\"hidden\">-12</text>\n",
       "    <text x=\"18.07\" y=\"50.03\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-442\" gadfly:scale=\"5.0\" visibility=\"hidden\">-10</text>\n",
       "    <text x=\"18.07\" y=\"44.29\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-443\" gadfly:scale=\"5.0\" visibility=\"hidden\">-8</text>\n",
       "    <text x=\"18.07\" y=\"38.55\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-444\" gadfly:scale=\"5.0\" visibility=\"hidden\">-6</text>\n",
       "    <text x=\"18.07\" y=\"32.82\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-445\" gadfly:scale=\"5.0\" visibility=\"hidden\">-4</text>\n",
       "    <text x=\"18.07\" y=\"27.08\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-446\" gadfly:scale=\"5.0\" visibility=\"hidden\">-2</text>\n",
       "    <text x=\"18.07\" y=\"21.34\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-447\" gadfly:scale=\"5.0\" visibility=\"hidden\">0</text>\n",
       "    <text x=\"18.07\" y=\"15.61\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-448\" gadfly:scale=\"5.0\" visibility=\"hidden\">2</text>\n",
       "    <text x=\"18.07\" y=\"9.87\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-449\" gadfly:scale=\"5.0\" visibility=\"hidden\">4</text>\n",
       "    <text x=\"18.07\" y=\"4.13\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-450\" gadfly:scale=\"5.0\" visibility=\"hidden\">6</text>\n",
       "    <text x=\"18.07\" y=\"-1.61\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-451\" gadfly:scale=\"5.0\" visibility=\"hidden\">8</text>\n",
       "    <text x=\"18.07\" y=\"-7.34\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-452\" gadfly:scale=\"5.0\" visibility=\"hidden\">10</text>\n",
       "    <text x=\"18.07\" y=\"-13.08\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-453\" gadfly:scale=\"5.0\" visibility=\"hidden\">12</text>\n",
       "    <text x=\"18.07\" y=\"-18.82\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-454\" gadfly:scale=\"5.0\" visibility=\"hidden\">14</text>\n",
       "    <text x=\"18.07\" y=\"-24.55\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-455\" gadfly:scale=\"5.0\" visibility=\"hidden\">16</text>\n",
       "    <text x=\"18.07\" y=\"-30.29\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-456\" gadfly:scale=\"5.0\" visibility=\"hidden\">18</text>\n",
       "    <text x=\"18.07\" y=\"-36.03\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-457\" gadfly:scale=\"5.0\" visibility=\"hidden\">20</text>\n",
       "    <text x=\"18.07\" y=\"-41.77\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-458\" gadfly:scale=\"5.0\" visibility=\"hidden\">22</text>\n",
       "    <text x=\"18.07\" y=\"-47.5\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-459\" gadfly:scale=\"5.0\" visibility=\"hidden\">24</text>\n",
       "    <text x=\"18.07\" y=\"-53.24\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-460\" gadfly:scale=\"5.0\" visibility=\"hidden\">26</text>\n",
       "    <text x=\"18.07\" y=\"-58.98\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-461\" gadfly:scale=\"5.0\" visibility=\"hidden\">28</text>\n",
       "    <text x=\"18.07\" y=\"-64.71\" text-anchor=\"end\" dy=\"0.35em\" id=\"img-ff04feb6-462\" gadfly:scale=\"5.0\" visibility=\"hidden\">30</text>\n",
       "  </g>\n",
       "  <g font-size=\"3.88\" font-family=\"'PT Sans','Helvetica Neue','Helvetica',sans-serif\" fill=\"#564A55\" stroke=\"#000000\" stroke-opacity=\"0.000\" id=\"img-ff04feb6-463\">\n",
       "    <text x=\"8.81\" y=\"40.86\" text-anchor=\"middle\" dy=\"0.35em\" transform=\"rotate(-90, 8.81, 42.86)\" id=\"img-ff04feb6-464\">f(x)</text>\n",
       "  </g>\n",
       "</g>\n",
       "<defs>\n",
       "  <clipPath id=\"img-ff04feb6-13\">\n",
       "  <path d=\"M19.07,5 L 127.58 5 127.58 80.72 19.07 80.72\" />\n",
       "</clipPath>\n",
       "</defs>\n",
       "<script> <![CDATA[\n",
       "(function(N){var k=/[\\.\\/]/,L=/\\s*,\\s*/,C=function(a,d){return a-d},a,v,y={n:{}},M=function(){for(var a=0,d=this.length;a<d;a++)if(\"undefined\"!=typeof this[a])return this[a]},A=function(){for(var a=this.length;--a;)if(\"undefined\"!=typeof this[a])return this[a]},w=function(k,d){k=String(k);var f=v,n=Array.prototype.slice.call(arguments,2),u=w.listeners(k),p=0,b,q=[],e={},l=[],r=a;l.firstDefined=M;l.lastDefined=A;a=k;for(var s=v=0,x=u.length;s<x;s++)\"zIndex\"in u[s]&&(q.push(u[s].zIndex),0>u[s].zIndex&&\n",
       "(e[u[s].zIndex]=u[s]));for(q.sort(C);0>q[p];)if(b=e[q[p++] ],l.push(b.apply(d,n)),v)return v=f,l;for(s=0;s<x;s++)if(b=u[s],\"zIndex\"in b)if(b.zIndex==q[p]){l.push(b.apply(d,n));if(v)break;do if(p++,(b=e[q[p] ])&&l.push(b.apply(d,n)),v)break;while(b)}else e[b.zIndex]=b;else if(l.push(b.apply(d,n)),v)break;v=f;a=r;return l};w._events=y;w.listeners=function(a){a=a.split(k);var d=y,f,n,u,p,b,q,e,l=[d],r=[];u=0;for(p=a.length;u<p;u++){e=[];b=0;for(q=l.length;b<q;b++)for(d=l[b].n,f=[d[a[u] ],d[\"*\"] ],n=2;n--;)if(d=\n",
       "f[n])e.push(d),r=r.concat(d.f||[]);l=e}return r};w.on=function(a,d){a=String(a);if(\"function\"!=typeof d)return function(){};for(var f=a.split(L),n=0,u=f.length;n<u;n++)(function(a){a=a.split(k);for(var b=y,f,e=0,l=a.length;e<l;e++)b=b.n,b=b.hasOwnProperty(a[e])&&b[a[e] ]||(b[a[e] ]={n:{}});b.f=b.f||[];e=0;for(l=b.f.length;e<l;e++)if(b.f[e]==d){f=!0;break}!f&&b.f.push(d)})(f[n]);return function(a){+a==+a&&(d.zIndex=+a)}};w.f=function(a){var d=[].slice.call(arguments,1);return function(){w.apply(null,\n",
       "[a,null].concat(d).concat([].slice.call(arguments,0)))}};w.stop=function(){v=1};w.nt=function(k){return k?(new RegExp(\"(?:\\\\.|\\\\/|^)\"+k+\"(?:\\\\.|\\\\/|$)\")).test(a):a};w.nts=function(){return a.split(k)};w.off=w.unbind=function(a,d){if(a){var f=a.split(L);if(1<f.length)for(var n=0,u=f.length;n<u;n++)w.off(f[n],d);else{for(var f=a.split(k),p,b,q,e,l=[y],n=0,u=f.length;n<u;n++)for(e=0;e<l.length;e+=q.length-2){q=[e,1];p=l[e].n;if(\"*\"!=f[n])p[f[n] ]&&q.push(p[f[n] ]);else for(b in p)p.hasOwnProperty(b)&&\n",
       "q.push(p[b]);l.splice.apply(l,q)}n=0;for(u=l.length;n<u;n++)for(p=l[n];p.n;){if(d){if(p.f){e=0;for(f=p.f.length;e<f;e++)if(p.f[e]==d){p.f.splice(e,1);break}!p.f.length&&delete p.f}for(b in p.n)if(p.n.hasOwnProperty(b)&&p.n[b].f){q=p.n[b].f;e=0;for(f=q.length;e<f;e++)if(q[e]==d){q.splice(e,1);break}!q.length&&delete p.n[b].f}}else for(b in delete p.f,p.n)p.n.hasOwnProperty(b)&&p.n[b].f&&delete p.n[b].f;p=p.n}}}else w._events=y={n:{}}};w.once=function(a,d){var f=function(){w.unbind(a,f);return d.apply(this,\n",
       "arguments)};return w.on(a,f)};w.version=\"0.4.2\";w.toString=function(){return\"You are running Eve 0.4.2\"};\"undefined\"!=typeof module&&module.exports?module.exports=w:\"function\"===typeof define&&define.amd?define(\"eve\",[],function(){return w}):N.eve=w})(this);\n",
       "(function(N,k){\"function\"===typeof define&&define.amd?define(\"Snap.svg\",[\"eve\"],function(L){return k(N,L)}):k(N,N.eve)})(this,function(N,k){var L=function(a){var k={},y=N.requestAnimationFrame||N.webkitRequestAnimationFrame||N.mozRequestAnimationFrame||N.oRequestAnimationFrame||N.msRequestAnimationFrame||function(a){setTimeout(a,16)},M=Array.isArray||function(a){return a instanceof Array||\"[object Array]\"==Object.prototype.toString.call(a)},A=0,w=\"M\"+(+new Date).toString(36),z=function(a){if(null==\n",
       "a)return this.s;var b=this.s-a;this.b+=this.dur*b;this.B+=this.dur*b;this.s=a},d=function(a){if(null==a)return this.spd;this.spd=a},f=function(a){if(null==a)return this.dur;this.s=this.s*a/this.dur;this.dur=a},n=function(){delete k[this.id];this.update();a(\"mina.stop.\"+this.id,this)},u=function(){this.pdif||(delete k[this.id],this.update(),this.pdif=this.get()-this.b)},p=function(){this.pdif&&(this.b=this.get()-this.pdif,delete this.pdif,k[this.id]=this)},b=function(){var a;if(M(this.start)){a=[];\n",
       "for(var b=0,e=this.start.length;b<e;b++)a[b]=+this.start[b]+(this.end[b]-this.start[b])*this.easing(this.s)}else a=+this.start+(this.end-this.start)*this.easing(this.s);this.set(a)},q=function(){var l=0,b;for(b in k)if(k.hasOwnProperty(b)){var e=k[b],f=e.get();l++;e.s=(f-e.b)/(e.dur/e.spd);1<=e.s&&(delete k[b],e.s=1,l--,function(b){setTimeout(function(){a(\"mina.finish.\"+b.id,b)})}(e));e.update()}l&&y(q)},e=function(a,r,s,x,G,h,J){a={id:w+(A++).toString(36),start:a,end:r,b:s,s:0,dur:x-s,spd:1,get:G,\n",
       "set:h,easing:J||e.linear,status:z,speed:d,duration:f,stop:n,pause:u,resume:p,update:b};k[a.id]=a;r=0;for(var K in k)if(k.hasOwnProperty(K)&&(r++,2==r))break;1==r&&y(q);return a};e.time=Date.now||function(){return+new Date};e.getById=function(a){return k[a]||null};e.linear=function(a){return a};e.easeout=function(a){return Math.pow(a,1.7)};e.easein=function(a){return Math.pow(a,0.48)};e.easeinout=function(a){if(1==a)return 1;if(0==a)return 0;var b=0.48-a/1.04,e=Math.sqrt(0.1734+b*b);a=e-b;a=Math.pow(Math.abs(a),\n",
       "1/3)*(0>a?-1:1);b=-e-b;b=Math.pow(Math.abs(b),1/3)*(0>b?-1:1);a=a+b+0.5;return 3*(1-a)*a*a+a*a*a};e.backin=function(a){return 1==a?1:a*a*(2.70158*a-1.70158)};e.backout=function(a){if(0==a)return 0;a-=1;return a*a*(2.70158*a+1.70158)+1};e.elastic=function(a){return a==!!a?a:Math.pow(2,-10*a)*Math.sin(2*(a-0.075)*Math.PI/0.3)+1};e.bounce=function(a){a<1/2.75?a*=7.5625*a:a<2/2.75?(a-=1.5/2.75,a=7.5625*a*a+0.75):a<2.5/2.75?(a-=2.25/2.75,a=7.5625*a*a+0.9375):(a-=2.625/2.75,a=7.5625*a*a+0.984375);return a};\n",
       "return N.mina=e}(\"undefined\"==typeof k?function(){}:k),C=function(){function a(c,t){if(c){if(c.tagName)return x(c);if(y(c,\"array\")&&a.set)return a.set.apply(a,c);if(c instanceof e)return c;if(null==t)return c=G.doc.querySelector(c),x(c)}return new s(null==c?\"100%\":c,null==t?\"100%\":t)}function v(c,a){if(a){\"#text\"==c&&(c=G.doc.createTextNode(a.text||\"\"));\"string\"==typeof c&&(c=v(c));if(\"string\"==typeof a)return\"xlink:\"==a.substring(0,6)?c.getAttributeNS(m,a.substring(6)):\"xml:\"==a.substring(0,4)?c.getAttributeNS(la,\n",
       "a.substring(4)):c.getAttribute(a);for(var da in a)if(a[h](da)){var b=J(a[da]);b?\"xlink:\"==da.substring(0,6)?c.setAttributeNS(m,da.substring(6),b):\"xml:\"==da.substring(0,4)?c.setAttributeNS(la,da.substring(4),b):c.setAttribute(da,b):c.removeAttribute(da)}}else c=G.doc.createElementNS(la,c);return c}function y(c,a){a=J.prototype.toLowerCase.call(a);return\"finite\"==a?isFinite(c):\"array\"==a&&(c instanceof Array||Array.isArray&&Array.isArray(c))?!0:\"null\"==a&&null===c||a==typeof c&&null!==c||\"object\"==\n",
       "a&&c===Object(c)||$.call(c).slice(8,-1).toLowerCase()==a}function M(c){if(\"function\"==typeof c||Object(c)!==c)return c;var a=new c.constructor,b;for(b in c)c[h](b)&&(a[b]=M(c[b]));return a}function A(c,a,b){function m(){var e=Array.prototype.slice.call(arguments,0),f=e.join(\"\\u2400\"),d=m.cache=m.cache||{},l=m.count=m.count||[];if(d[h](f)){a:for(var e=l,l=f,B=0,H=e.length;B<H;B++)if(e[B]===l){e.push(e.splice(B,1)[0]);break a}return b?b(d[f]):d[f]}1E3<=l.length&&delete d[l.shift()];l.push(f);d[f]=c.apply(a,\n",
       "e);return b?b(d[f]):d[f]}return m}function w(c,a,b,m,e,f){return null==e?(c-=b,a-=m,c||a?(180*I.atan2(-a,-c)/C+540)%360:0):w(c,a,e,f)-w(b,m,e,f)}function z(c){return c%360*C/180}function d(c){var a=[];c=c.replace(/(?:^|\\s)(\\w+)\\(([^)]+)\\)/g,function(c,b,m){m=m.split(/\\s*,\\s*|\\s+/);\"rotate\"==b&&1==m.length&&m.push(0,0);\"scale\"==b&&(2<m.length?m=m.slice(0,2):2==m.length&&m.push(0,0),1==m.length&&m.push(m[0],0,0));\"skewX\"==b?a.push([\"m\",1,0,I.tan(z(m[0])),1,0,0]):\"skewY\"==b?a.push([\"m\",1,I.tan(z(m[0])),\n",
       "0,1,0,0]):a.push([b.charAt(0)].concat(m));return c});return a}function f(c,t){var b=O(c),m=new a.Matrix;if(b)for(var e=0,f=b.length;e<f;e++){var h=b[e],d=h.length,B=J(h[0]).toLowerCase(),H=h[0]!=B,l=H?m.invert():0,E;\"t\"==B&&2==d?m.translate(h[1],0):\"t\"==B&&3==d?H?(d=l.x(0,0),B=l.y(0,0),H=l.x(h[1],h[2]),l=l.y(h[1],h[2]),m.translate(H-d,l-B)):m.translate(h[1],h[2]):\"r\"==B?2==d?(E=E||t,m.rotate(h[1],E.x+E.width/2,E.y+E.height/2)):4==d&&(H?(H=l.x(h[2],h[3]),l=l.y(h[2],h[3]),m.rotate(h[1],H,l)):m.rotate(h[1],\n",
       "h[2],h[3])):\"s\"==B?2==d||3==d?(E=E||t,m.scale(h[1],h[d-1],E.x+E.width/2,E.y+E.height/2)):4==d?H?(H=l.x(h[2],h[3]),l=l.y(h[2],h[3]),m.scale(h[1],h[1],H,l)):m.scale(h[1],h[1],h[2],h[3]):5==d&&(H?(H=l.x(h[3],h[4]),l=l.y(h[3],h[4]),m.scale(h[1],h[2],H,l)):m.scale(h[1],h[2],h[3],h[4])):\"m\"==B&&7==d&&m.add(h[1],h[2],h[3],h[4],h[5],h[6])}return m}function n(c,t){if(null==t){var m=!0;t=\"linearGradient\"==c.type||\"radialGradient\"==c.type?c.node.getAttribute(\"gradientTransform\"):\"pattern\"==c.type?c.node.getAttribute(\"patternTransform\"):\n",
       "c.node.getAttribute(\"transform\");if(!t)return new a.Matrix;t=d(t)}else t=a._.rgTransform.test(t)?J(t).replace(/\\.{3}|\\u2026/g,c._.transform||aa):d(t),y(t,\"array\")&&(t=a.path?a.path.toString.call(t):J(t)),c._.transform=t;var b=f(t,c.getBBox(1));if(m)return b;c.matrix=b}function u(c){c=c.node.ownerSVGElement&&x(c.node.ownerSVGElement)||c.node.parentNode&&x(c.node.parentNode)||a.select(\"svg\")||a(0,0);var t=c.select(\"defs\"),t=null==t?!1:t.node;t||(t=r(\"defs\",c.node).node);return t}function p(c){return c.node.ownerSVGElement&&\n",
       "x(c.node.ownerSVGElement)||a.select(\"svg\")}function b(c,a,m){function b(c){if(null==c)return aa;if(c==+c)return c;v(B,{width:c});try{return B.getBBox().width}catch(a){return 0}}function h(c){if(null==c)return aa;if(c==+c)return c;v(B,{height:c});try{return B.getBBox().height}catch(a){return 0}}function e(b,B){null==a?d[b]=B(c.attr(b)||0):b==a&&(d=B(null==m?c.attr(b)||0:m))}var f=p(c).node,d={},B=f.querySelector(\".svg---mgr\");B||(B=v(\"rect\"),v(B,{x:-9E9,y:-9E9,width:10,height:10,\"class\":\"svg---mgr\",\n",
       "fill:\"none\"}),f.appendChild(B));switch(c.type){case \"rect\":e(\"rx\",b),e(\"ry\",h);case \"image\":e(\"width\",b),e(\"height\",h);case \"text\":e(\"x\",b);e(\"y\",h);break;case \"circle\":e(\"cx\",b);e(\"cy\",h);e(\"r\",b);break;case \"ellipse\":e(\"cx\",b);e(\"cy\",h);e(\"rx\",b);e(\"ry\",h);break;case \"line\":e(\"x1\",b);e(\"x2\",b);e(\"y1\",h);e(\"y2\",h);break;case \"marker\":e(\"refX\",b);e(\"markerWidth\",b);e(\"refY\",h);e(\"markerHeight\",h);break;case \"radialGradient\":e(\"fx\",b);e(\"fy\",h);break;case \"tspan\":e(\"dx\",b);e(\"dy\",h);break;default:e(a,\n",
       "b)}f.removeChild(B);return d}function q(c){y(c,\"array\")||(c=Array.prototype.slice.call(arguments,0));for(var a=0,b=0,m=this.node;this[a];)delete this[a++];for(a=0;a<c.length;a++)\"set\"==c[a].type?c[a].forEach(function(c){m.appendChild(c.node)}):m.appendChild(c[a].node);for(var h=m.childNodes,a=0;a<h.length;a++)this[b++]=x(h[a]);return this}function e(c){if(c.snap in E)return E[c.snap];var a=this.id=V(),b;try{b=c.ownerSVGElement}catch(m){}this.node=c;b&&(this.paper=new s(b));this.type=c.tagName;this.anims=\n",
       "{};this._={transform:[]};c.snap=a;E[a]=this;\"g\"==this.type&&(this.add=q);if(this.type in{g:1,mask:1,pattern:1})for(var e in s.prototype)s.prototype[h](e)&&(this[e]=s.prototype[e])}function l(c){this.node=c}function r(c,a){var b=v(c);a.appendChild(b);return x(b)}function s(c,a){var b,m,f,d=s.prototype;if(c&&\"svg\"==c.tagName){if(c.snap in E)return E[c.snap];var l=c.ownerDocument;b=new e(c);m=c.getElementsByTagName(\"desc\")[0];f=c.getElementsByTagName(\"defs\")[0];m||(m=v(\"desc\"),m.appendChild(l.createTextNode(\"Created with Snap\")),\n",
       "b.node.appendChild(m));f||(f=v(\"defs\"),b.node.appendChild(f));b.defs=f;for(var ca in d)d[h](ca)&&(b[ca]=d[ca]);b.paper=b.root=b}else b=r(\"svg\",G.doc.body),v(b.node,{height:a,version:1.1,width:c,xmlns:la});return b}function x(c){return!c||c instanceof e||c instanceof l?c:c.tagName&&\"svg\"==c.tagName.toLowerCase()?new s(c):c.tagName&&\"object\"==c.tagName.toLowerCase()&&\"image/svg+xml\"==c.type?new s(c.contentDocument.getElementsByTagName(\"svg\")[0]):new e(c)}a.version=\"0.3.0\";a.toString=function(){return\"Snap v\"+\n",
       "this.version};a._={};var G={win:N,doc:N.document};a._.glob=G;var h=\"hasOwnProperty\",J=String,K=parseFloat,U=parseInt,I=Math,P=I.max,Q=I.min,Y=I.abs,C=I.PI,aa=\"\",$=Object.prototype.toString,F=/^\\s*((#[a-f\\d]{6})|(#[a-f\\d]{3})|rgba?\\(\\s*([\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?(?:\\s*,\\s*[\\d\\.]+%?)?)\\s*\\)|hsba?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?%?)\\s*\\)|hsla?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?%?)\\s*\\))\\s*$/i;a._.separator=\n",
       "RegExp(\"[,\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]+\");var S=RegExp(\"[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*\"),X={hs:1,rg:1},W=RegExp(\"([a-z])[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029,]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,?[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*)+)\",\n",
       "\"ig\"),ma=RegExp(\"([rstm])[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029,]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,?[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*)+)\",\"ig\"),Z=RegExp(\"(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,?[\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*\",\n",
       "\"ig\"),na=0,ba=\"S\"+(+new Date).toString(36),V=function(){return ba+(na++).toString(36)},m=\"http://www.w3.org/1999/xlink\",la=\"http://www.w3.org/2000/svg\",E={},ca=a.url=function(c){return\"url('#\"+c+\"')\"};a._.$=v;a._.id=V;a.format=function(){var c=/\\{([^\\}]+)\\}/g,a=/(?:(?:^|\\.)(.+?)(?=\\[|\\.|$|\\()|\\[('|\")(.+?)\\2\\])(\\(\\))?/g,b=function(c,b,m){var h=m;b.replace(a,function(c,a,b,m,t){a=a||m;h&&(a in h&&(h=h[a]),\"function\"==typeof h&&t&&(h=h()))});return h=(null==h||h==m?c:h)+\"\"};return function(a,m){return J(a).replace(c,\n",
       "function(c,a){return b(c,a,m)})}}();a._.clone=M;a._.cacher=A;a.rad=z;a.deg=function(c){return 180*c/C%360};a.angle=w;a.is=y;a.snapTo=function(c,a,b){b=y(b,\"finite\")?b:10;if(y(c,\"array\"))for(var m=c.length;m--;){if(Y(c[m]-a)<=b)return c[m]}else{c=+c;m=a%c;if(m<b)return a-m;if(m>c-b)return a-m+c}return a};a.getRGB=A(function(c){if(!c||(c=J(c)).indexOf(\"-\")+1)return{r:-1,g:-1,b:-1,hex:\"none\",error:1,toString:ka};if(\"none\"==c)return{r:-1,g:-1,b:-1,hex:\"none\",toString:ka};!X[h](c.toLowerCase().substring(0,\n",
       "2))&&\"#\"!=c.charAt()&&(c=T(c));if(!c)return{r:-1,g:-1,b:-1,hex:\"none\",error:1,toString:ka};var b,m,e,f,d;if(c=c.match(F)){c[2]&&(e=U(c[2].substring(5),16),m=U(c[2].substring(3,5),16),b=U(c[2].substring(1,3),16));c[3]&&(e=U((d=c[3].charAt(3))+d,16),m=U((d=c[3].charAt(2))+d,16),b=U((d=c[3].charAt(1))+d,16));c[4]&&(d=c[4].split(S),b=K(d[0]),\"%\"==d[0].slice(-1)&&(b*=2.55),m=K(d[1]),\"%\"==d[1].slice(-1)&&(m*=2.55),e=K(d[2]),\"%\"==d[2].slice(-1)&&(e*=2.55),\"rgba\"==c[1].toLowerCase().slice(0,4)&&(f=K(d[3])),\n",
       "d[3]&&\"%\"==d[3].slice(-1)&&(f/=100));if(c[5])return d=c[5].split(S),b=K(d[0]),\"%\"==d[0].slice(-1)&&(b/=100),m=K(d[1]),\"%\"==d[1].slice(-1)&&(m/=100),e=K(d[2]),\"%\"==d[2].slice(-1)&&(e/=100),\"deg\"!=d[0].slice(-3)&&\"\\u00b0\"!=d[0].slice(-1)||(b/=360),\"hsba\"==c[1].toLowerCase().slice(0,4)&&(f=K(d[3])),d[3]&&\"%\"==d[3].slice(-1)&&(f/=100),a.hsb2rgb(b,m,e,f);if(c[6])return d=c[6].split(S),b=K(d[0]),\"%\"==d[0].slice(-1)&&(b/=100),m=K(d[1]),\"%\"==d[1].slice(-1)&&(m/=100),e=K(d[2]),\"%\"==d[2].slice(-1)&&(e/=100),\n",
       "\"deg\"!=d[0].slice(-3)&&\"\\u00b0\"!=d[0].slice(-1)||(b/=360),\"hsla\"==c[1].toLowerCase().slice(0,4)&&(f=K(d[3])),d[3]&&\"%\"==d[3].slice(-1)&&(f/=100),a.hsl2rgb(b,m,e,f);b=Q(I.round(b),255);m=Q(I.round(m),255);e=Q(I.round(e),255);f=Q(P(f,0),1);c={r:b,g:m,b:e,toString:ka};c.hex=\"#\"+(16777216|e|m<<8|b<<16).toString(16).slice(1);c.opacity=y(f,\"finite\")?f:1;return c}return{r:-1,g:-1,b:-1,hex:\"none\",error:1,toString:ka}},a);a.hsb=A(function(c,b,m){return a.hsb2rgb(c,b,m).hex});a.hsl=A(function(c,b,m){return a.hsl2rgb(c,\n",
       "b,m).hex});a.rgb=A(function(c,a,b,m){if(y(m,\"finite\")){var e=I.round;return\"rgba(\"+[e(c),e(a),e(b),+m.toFixed(2)]+\")\"}return\"#\"+(16777216|b|a<<8|c<<16).toString(16).slice(1)});var T=function(c){var a=G.doc.getElementsByTagName(\"head\")[0]||G.doc.getElementsByTagName(\"svg\")[0];T=A(function(c){if(\"red\"==c.toLowerCase())return\"rgb(255, 0, 0)\";a.style.color=\"rgb(255, 0, 0)\";a.style.color=c;c=G.doc.defaultView.getComputedStyle(a,aa).getPropertyValue(\"color\");return\"rgb(255, 0, 0)\"==c?null:c});return T(c)},\n",
       "qa=function(){return\"hsb(\"+[this.h,this.s,this.b]+\")\"},ra=function(){return\"hsl(\"+[this.h,this.s,this.l]+\")\"},ka=function(){return 1==this.opacity||null==this.opacity?this.hex:\"rgba(\"+[this.r,this.g,this.b,this.opacity]+\")\"},D=function(c,b,m){null==b&&y(c,\"object\")&&\"r\"in c&&\"g\"in c&&\"b\"in c&&(m=c.b,b=c.g,c=c.r);null==b&&y(c,string)&&(m=a.getRGB(c),c=m.r,b=m.g,m=m.b);if(1<c||1<b||1<m)c/=255,b/=255,m/=255;return[c,b,m]},oa=function(c,b,m,e){c=I.round(255*c);b=I.round(255*b);m=I.round(255*m);c={r:c,\n",
       "g:b,b:m,opacity:y(e,\"finite\")?e:1,hex:a.rgb(c,b,m),toString:ka};y(e,\"finite\")&&(c.opacity=e);return c};a.color=function(c){var b;y(c,\"object\")&&\"h\"in c&&\"s\"in c&&\"b\"in c?(b=a.hsb2rgb(c),c.r=b.r,c.g=b.g,c.b=b.b,c.opacity=1,c.hex=b.hex):y(c,\"object\")&&\"h\"in c&&\"s\"in c&&\"l\"in c?(b=a.hsl2rgb(c),c.r=b.r,c.g=b.g,c.b=b.b,c.opacity=1,c.hex=b.hex):(y(c,\"string\")&&(c=a.getRGB(c)),y(c,\"object\")&&\"r\"in c&&\"g\"in c&&\"b\"in c&&!(\"error\"in c)?(b=a.rgb2hsl(c),c.h=b.h,c.s=b.s,c.l=b.l,b=a.rgb2hsb(c),c.v=b.b):(c={hex:\"none\"},\n",
       "c.r=c.g=c.b=c.h=c.s=c.v=c.l=-1,c.error=1));c.toString=ka;return c};a.hsb2rgb=function(c,a,b,m){y(c,\"object\")&&\"h\"in c&&\"s\"in c&&\"b\"in c&&(b=c.b,a=c.s,c=c.h,m=c.o);var e,h,d;c=360*c%360/60;d=b*a;a=d*(1-Y(c%2-1));b=e=h=b-d;c=~~c;b+=[d,a,0,0,a,d][c];e+=[a,d,d,a,0,0][c];h+=[0,0,a,d,d,a][c];return oa(b,e,h,m)};a.hsl2rgb=function(c,a,b,m){y(c,\"object\")&&\"h\"in c&&\"s\"in c&&\"l\"in c&&(b=c.l,a=c.s,c=c.h);if(1<c||1<a||1<b)c/=360,a/=100,b/=100;var e,h,d;c=360*c%360/60;d=2*a*(0.5>b?b:1-b);a=d*(1-Y(c%2-1));b=e=\n",
       "h=b-d/2;c=~~c;b+=[d,a,0,0,a,d][c];e+=[a,d,d,a,0,0][c];h+=[0,0,a,d,d,a][c];return oa(b,e,h,m)};a.rgb2hsb=function(c,a,b){b=D(c,a,b);c=b[0];a=b[1];b=b[2];var m,e;m=P(c,a,b);e=m-Q(c,a,b);c=((0==e?0:m==c?(a-b)/e:m==a?(b-c)/e+2:(c-a)/e+4)+360)%6*60/360;return{h:c,s:0==e?0:e/m,b:m,toString:qa}};a.rgb2hsl=function(c,a,b){b=D(c,a,b);c=b[0];a=b[1];b=b[2];var m,e,h;m=P(c,a,b);e=Q(c,a,b);h=m-e;c=((0==h?0:m==c?(a-b)/h:m==a?(b-c)/h+2:(c-a)/h+4)+360)%6*60/360;m=(m+e)/2;return{h:c,s:0==h?0:0.5>m?h/(2*m):h/(2-2*\n",
       "m),l:m,toString:ra}};a.parsePathString=function(c){if(!c)return null;var b=a.path(c);if(b.arr)return a.path.clone(b.arr);var m={a:7,c:6,o:2,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,u:3,z:0},e=[];y(c,\"array\")&&y(c[0],\"array\")&&(e=a.path.clone(c));e.length||J(c).replace(W,function(c,a,b){var h=[];c=a.toLowerCase();b.replace(Z,function(c,a){a&&h.push(+a)});\"m\"==c&&2<h.length&&(e.push([a].concat(h.splice(0,2))),c=\"l\",a=\"m\"==a?\"l\":\"L\");\"o\"==c&&1==h.length&&e.push([a,h[0] ]);if(\"r\"==c)e.push([a].concat(h));else for(;h.length>=\n",
       "m[c]&&(e.push([a].concat(h.splice(0,m[c]))),m[c]););});e.toString=a.path.toString;b.arr=a.path.clone(e);return e};var O=a.parseTransformString=function(c){if(!c)return null;var b=[];y(c,\"array\")&&y(c[0],\"array\")&&(b=a.path.clone(c));b.length||J(c).replace(ma,function(c,a,m){var e=[];a.toLowerCase();m.replace(Z,function(c,a){a&&e.push(+a)});b.push([a].concat(e))});b.toString=a.path.toString;return b};a._.svgTransform2string=d;a._.rgTransform=RegExp(\"^[a-z][\\t\\n\\x0B\\f\\r \\u00a0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*-?\\\\.?\\\\d\",\n",
       "\"i\");a._.transform2matrix=f;a._unit2px=b;a._.getSomeDefs=u;a._.getSomeSVG=p;a.select=function(c){return x(G.doc.querySelector(c))};a.selectAll=function(c){c=G.doc.querySelectorAll(c);for(var b=(a.set||Array)(),m=0;m<c.length;m++)b.push(x(c[m]));return b};setInterval(function(){for(var c in E)if(E[h](c)){var a=E[c],b=a.node;(\"svg\"!=a.type&&!b.ownerSVGElement||\"svg\"==a.type&&(!b.parentNode||\"ownerSVGElement\"in b.parentNode&&!b.ownerSVGElement))&&delete E[c]}},1E4);(function(c){function m(c){function a(c,\n",
       "b){var m=v(c.node,b);(m=(m=m&&m.match(d))&&m[2])&&\"#\"==m.charAt()&&(m=m.substring(1))&&(f[m]=(f[m]||[]).concat(function(a){var m={};m[b]=ca(a);v(c.node,m)}))}function b(c){var a=v(c.node,\"xlink:href\");a&&\"#\"==a.charAt()&&(a=a.substring(1))&&(f[a]=(f[a]||[]).concat(function(a){c.attr(\"xlink:href\",\"#\"+a)}))}var e=c.selectAll(\"*\"),h,d=/^\\s*url\\((\"|'|)(.*)\\1\\)\\s*$/;c=[];for(var f={},l=0,E=e.length;l<E;l++){h=e[l];a(h,\"fill\");a(h,\"stroke\");a(h,\"filter\");a(h,\"mask\");a(h,\"clip-path\");b(h);var t=v(h.node,\n",
       "\"id\");t&&(v(h.node,{id:h.id}),c.push({old:t,id:h.id}))}l=0;for(E=c.length;l<E;l++)if(e=f[c[l].old])for(h=0,t=e.length;h<t;h++)e[h](c[l].id)}function e(c,a,b){return function(m){m=m.slice(c,a);1==m.length&&(m=m[0]);return b?b(m):m}}function d(c){return function(){var a=c?\"<\"+this.type:\"\",b=this.node.attributes,m=this.node.childNodes;if(c)for(var e=0,h=b.length;e<h;e++)a+=\" \"+b[e].name+'=\"'+b[e].value.replace(/\"/g,'\\\\\"')+'\"';if(m.length){c&&(a+=\">\");e=0;for(h=m.length;e<h;e++)3==m[e].nodeType?a+=m[e].nodeValue:\n",
       "1==m[e].nodeType&&(a+=x(m[e]).toString());c&&(a+=\"</\"+this.type+\">\")}else c&&(a+=\"/>\");return a}}c.attr=function(c,a){if(!c)return this;if(y(c,\"string\"))if(1<arguments.length){var b={};b[c]=a;c=b}else return k(\"snap.util.getattr.\"+c,this).firstDefined();for(var m in c)c[h](m)&&k(\"snap.util.attr.\"+m,this,c[m]);return this};c.getBBox=function(c){if(!a.Matrix||!a.path)return this.node.getBBox();var b=this,m=new a.Matrix;if(b.removed)return a._.box();for(;\"use\"==b.type;)if(c||(m=m.add(b.transform().localMatrix.translate(b.attr(\"x\")||\n",
       "0,b.attr(\"y\")||0))),b.original)b=b.original;else var e=b.attr(\"xlink:href\"),b=b.original=b.node.ownerDocument.getElementById(e.substring(e.indexOf(\"#\")+1));var e=b._,h=a.path.get[b.type]||a.path.get.deflt;try{if(c)return e.bboxwt=h?a.path.getBBox(b.realPath=h(b)):a._.box(b.node.getBBox()),a._.box(e.bboxwt);b.realPath=h(b);b.matrix=b.transform().localMatrix;e.bbox=a.path.getBBox(a.path.map(b.realPath,m.add(b.matrix)));return a._.box(e.bbox)}catch(d){return a._.box()}};var f=function(){return this.string};\n",
       "c.transform=function(c){var b=this._;if(null==c){var m=this;c=new a.Matrix(this.node.getCTM());for(var e=n(this),h=[e],d=new a.Matrix,l=e.toTransformString(),b=J(e)==J(this.matrix)?J(b.transform):l;\"svg\"!=m.type&&(m=m.parent());)h.push(n(m));for(m=h.length;m--;)d.add(h[m]);return{string:b,globalMatrix:c,totalMatrix:d,localMatrix:e,diffMatrix:c.clone().add(e.invert()),global:c.toTransformString(),total:d.toTransformString(),local:l,toString:f}}c instanceof a.Matrix?this.matrix=c:n(this,c);this.node&&\n",
       "(\"linearGradient\"==this.type||\"radialGradient\"==this.type?v(this.node,{gradientTransform:this.matrix}):\"pattern\"==this.type?v(this.node,{patternTransform:this.matrix}):v(this.node,{transform:this.matrix}));return this};c.parent=function(){return x(this.node.parentNode)};c.append=c.add=function(c){if(c){if(\"set\"==c.type){var a=this;c.forEach(function(c){a.add(c)});return this}c=x(c);this.node.appendChild(c.node);c.paper=this.paper}return this};c.appendTo=function(c){c&&(c=x(c),c.append(this));return this};\n",
       "c.prepend=function(c){if(c){if(\"set\"==c.type){var a=this,b;c.forEach(function(c){b?b.after(c):a.prepend(c);b=c});return this}c=x(c);var m=c.parent();this.node.insertBefore(c.node,this.node.firstChild);this.add&&this.add();c.paper=this.paper;this.parent()&&this.parent().add();m&&m.add()}return this};c.prependTo=function(c){c=x(c);c.prepend(this);return this};c.before=function(c){if(\"set\"==c.type){var a=this;c.forEach(function(c){var b=c.parent();a.node.parentNode.insertBefore(c.node,a.node);b&&b.add()});\n",
       "this.parent().add();return this}c=x(c);var b=c.parent();this.node.parentNode.insertBefore(c.node,this.node);this.parent()&&this.parent().add();b&&b.add();c.paper=this.paper;return this};c.after=function(c){c=x(c);var a=c.parent();this.node.nextSibling?this.node.parentNode.insertBefore(c.node,this.node.nextSibling):this.node.parentNode.appendChild(c.node);this.parent()&&this.parent().add();a&&a.add();c.paper=this.paper;return this};c.insertBefore=function(c){c=x(c);var a=this.parent();c.node.parentNode.insertBefore(this.node,\n",
       "c.node);this.paper=c.paper;a&&a.add();c.parent()&&c.parent().add();return this};c.insertAfter=function(c){c=x(c);var a=this.parent();c.node.parentNode.insertBefore(this.node,c.node.nextSibling);this.paper=c.paper;a&&a.add();c.parent()&&c.parent().add();return this};c.remove=function(){var c=this.parent();this.node.parentNode&&this.node.parentNode.removeChild(this.node);delete this.paper;this.removed=!0;c&&c.add();return this};c.select=function(c){return x(this.node.querySelector(c))};c.selectAll=\n",
       "function(c){c=this.node.querySelectorAll(c);for(var b=(a.set||Array)(),m=0;m<c.length;m++)b.push(x(c[m]));return b};c.asPX=function(c,a){null==a&&(a=this.attr(c));return+b(this,c,a)};c.use=function(){var c,a=this.node.id;a||(a=this.id,v(this.node,{id:a}));c=\"linearGradient\"==this.type||\"radialGradient\"==this.type||\"pattern\"==this.type?r(this.type,this.node.parentNode):r(\"use\",this.node.parentNode);v(c.node,{\"xlink:href\":\"#\"+a});c.original=this;return c};var l=/\\S+/g;c.addClass=function(c){var a=(c||\n",
       "\"\").match(l)||[];c=this.node;var b=c.className.baseVal,m=b.match(l)||[],e,h,d;if(a.length){for(e=0;d=a[e++];)h=m.indexOf(d),~h||m.push(d);a=m.join(\" \");b!=a&&(c.className.baseVal=a)}return this};c.removeClass=function(c){var a=(c||\"\").match(l)||[];c=this.node;var b=c.className.baseVal,m=b.match(l)||[],e,h;if(m.length){for(e=0;h=a[e++];)h=m.indexOf(h),~h&&m.splice(h,1);a=m.join(\" \");b!=a&&(c.className.baseVal=a)}return this};c.hasClass=function(c){return!!~(this.node.className.baseVal.match(l)||[]).indexOf(c)};\n",
       "c.toggleClass=function(c,a){if(null!=a)return a?this.addClass(c):this.removeClass(c);var b=(c||\"\").match(l)||[],m=this.node,e=m.className.baseVal,h=e.match(l)||[],d,f,E;for(d=0;E=b[d++];)f=h.indexOf(E),~f?h.splice(f,1):h.push(E);b=h.join(\" \");e!=b&&(m.className.baseVal=b);return this};c.clone=function(){var c=x(this.node.cloneNode(!0));v(c.node,\"id\")&&v(c.node,{id:c.id});m(c);c.insertAfter(this);return c};c.toDefs=function(){u(this).appendChild(this.node);return this};c.pattern=c.toPattern=function(c,\n",
       "a,b,m){var e=r(\"pattern\",u(this));null==c&&(c=this.getBBox());y(c,\"object\")&&\"x\"in c&&(a=c.y,b=c.width,m=c.height,c=c.x);v(e.node,{x:c,y:a,width:b,height:m,patternUnits:\"userSpaceOnUse\",id:e.id,viewBox:[c,a,b,m].join(\" \")});e.node.appendChild(this.node);return e};c.marker=function(c,a,b,m,e,h){var d=r(\"marker\",u(this));null==c&&(c=this.getBBox());y(c,\"object\")&&\"x\"in c&&(a=c.y,b=c.width,m=c.height,e=c.refX||c.cx,h=c.refY||c.cy,c=c.x);v(d.node,{viewBox:[c,a,b,m].join(\" \"),markerWidth:b,markerHeight:m,\n",
       "orient:\"auto\",refX:e||0,refY:h||0,id:d.id});d.node.appendChild(this.node);return d};var E=function(c,a,b,m){\"function\"!=typeof b||b.length||(m=b,b=L.linear);this.attr=c;this.dur=a;b&&(this.easing=b);m&&(this.callback=m)};a._.Animation=E;a.animation=function(c,a,b,m){return new E(c,a,b,m)};c.inAnim=function(){var c=[],a;for(a in this.anims)this.anims[h](a)&&function(a){c.push({anim:new E(a._attrs,a.dur,a.easing,a._callback),mina:a,curStatus:a.status(),status:function(c){return a.status(c)},stop:function(){a.stop()}})}(this.anims[a]);\n",
       "return c};a.animate=function(c,a,b,m,e,h){\"function\"!=typeof e||e.length||(h=e,e=L.linear);var d=L.time();c=L(c,a,d,d+m,L.time,b,e);h&&k.once(\"mina.finish.\"+c.id,h);return c};c.stop=function(){for(var c=this.inAnim(),a=0,b=c.length;a<b;a++)c[a].stop();return this};c.animate=function(c,a,b,m){\"function\"!=typeof b||b.length||(m=b,b=L.linear);c instanceof E&&(m=c.callback,b=c.easing,a=b.dur,c=c.attr);var d=[],f=[],l={},t,ca,n,T=this,q;for(q in c)if(c[h](q)){T.equal?(n=T.equal(q,J(c[q])),t=n.from,ca=\n",
       "n.to,n=n.f):(t=+T.attr(q),ca=+c[q]);var la=y(t,\"array\")?t.length:1;l[q]=e(d.length,d.length+la,n);d=d.concat(t);f=f.concat(ca)}t=L.time();var p=L(d,f,t,t+a,L.time,function(c){var a={},b;for(b in l)l[h](b)&&(a[b]=l[b](c));T.attr(a)},b);T.anims[p.id]=p;p._attrs=c;p._callback=m;k(\"snap.animcreated.\"+T.id,p);k.once(\"mina.finish.\"+p.id,function(){delete T.anims[p.id];m&&m.call(T)});k.once(\"mina.stop.\"+p.id,function(){delete T.anims[p.id]});return T};var T={};c.data=function(c,b){var m=T[this.id]=T[this.id]||\n",
       "{};if(0==arguments.length)return k(\"snap.data.get.\"+this.id,this,m,null),m;if(1==arguments.length){if(a.is(c,\"object\")){for(var e in c)c[h](e)&&this.data(e,c[e]);return this}k(\"snap.data.get.\"+this.id,this,m[c],c);return m[c]}m[c]=b;k(\"snap.data.set.\"+this.id,this,b,c);return this};c.removeData=function(c){null==c?T[this.id]={}:T[this.id]&&delete T[this.id][c];return this};c.outerSVG=c.toString=d(1);c.innerSVG=d()})(e.prototype);a.parse=function(c){var a=G.doc.createDocumentFragment(),b=!0,m=G.doc.createElement(\"div\");\n",
       "c=J(c);c.match(/^\\s*<\\s*svg(?:\\s|>)/)||(c=\"<svg>\"+c+\"</svg>\",b=!1);m.innerHTML=c;if(c=m.getElementsByTagName(\"svg\")[0])if(b)a=c;else for(;c.firstChild;)a.appendChild(c.firstChild);m.innerHTML=aa;return new l(a)};l.prototype.select=e.prototype.select;l.prototype.selectAll=e.prototype.selectAll;a.fragment=function(){for(var c=Array.prototype.slice.call(arguments,0),b=G.doc.createDocumentFragment(),m=0,e=c.length;m<e;m++){var h=c[m];h.node&&h.node.nodeType&&b.appendChild(h.node);h.nodeType&&b.appendChild(h);\n",
       "\"string\"==typeof h&&b.appendChild(a.parse(h).node)}return new l(b)};a._.make=r;a._.wrap=x;s.prototype.el=function(c,a){var b=r(c,this.node);a&&b.attr(a);return b};k.on(\"snap.util.getattr\",function(){var c=k.nt(),c=c.substring(c.lastIndexOf(\".\")+1),a=c.replace(/[A-Z]/g,function(c){return\"-\"+c.toLowerCase()});return pa[h](a)?this.node.ownerDocument.defaultView.getComputedStyle(this.node,null).getPropertyValue(a):v(this.node,c)});var pa={\"alignment-baseline\":0,\"baseline-shift\":0,clip:0,\"clip-path\":0,\n",
       "\"clip-rule\":0,color:0,\"color-interpolation\":0,\"color-interpolation-filters\":0,\"color-profile\":0,\"color-rendering\":0,cursor:0,direction:0,display:0,\"dominant-baseline\":0,\"enable-background\":0,fill:0,\"fill-opacity\":0,\"fill-rule\":0,filter:0,\"flood-color\":0,\"flood-opacity\":0,font:0,\"font-family\":0,\"font-size\":0,\"font-size-adjust\":0,\"font-stretch\":0,\"font-style\":0,\"font-variant\":0,\"font-weight\":0,\"glyph-orientation-horizontal\":0,\"glyph-orientation-vertical\":0,\"image-rendering\":0,kerning:0,\"letter-spacing\":0,\n",
       "\"lighting-color\":0,marker:0,\"marker-end\":0,\"marker-mid\":0,\"marker-start\":0,mask:0,opacity:0,overflow:0,\"pointer-events\":0,\"shape-rendering\":0,\"stop-color\":0,\"stop-opacity\":0,stroke:0,\"stroke-dasharray\":0,\"stroke-dashoffset\":0,\"stroke-linecap\":0,\"stroke-linejoin\":0,\"stroke-miterlimit\":0,\"stroke-opacity\":0,\"stroke-width\":0,\"text-anchor\":0,\"text-decoration\":0,\"text-rendering\":0,\"unicode-bidi\":0,visibility:0,\"word-spacing\":0,\"writing-mode\":0};k.on(\"snap.util.attr\",function(c){var a=k.nt(),b={},a=a.substring(a.lastIndexOf(\".\")+\n",
       "1);b[a]=c;var m=a.replace(/-(\\w)/gi,function(c,a){return a.toUpperCase()}),a=a.replace(/[A-Z]/g,function(c){return\"-\"+c.toLowerCase()});pa[h](a)?this.node.style[m]=null==c?aa:c:v(this.node,b)});a.ajax=function(c,a,b,m){var e=new XMLHttpRequest,h=V();if(e){if(y(a,\"function\"))m=b,b=a,a=null;else if(y(a,\"object\")){var d=[],f;for(f in a)a.hasOwnProperty(f)&&d.push(encodeURIComponent(f)+\"=\"+encodeURIComponent(a[f]));a=d.join(\"&\")}e.open(a?\"POST\":\"GET\",c,!0);a&&(e.setRequestHeader(\"X-Requested-With\",\"XMLHttpRequest\"),\n",
       "e.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded\"));b&&(k.once(\"snap.ajax.\"+h+\".0\",b),k.once(\"snap.ajax.\"+h+\".200\",b),k.once(\"snap.ajax.\"+h+\".304\",b));e.onreadystatechange=function(){4==e.readyState&&k(\"snap.ajax.\"+h+\".\"+e.status,m,e)};if(4==e.readyState)return e;e.send(a);return e}};a.load=function(c,b,m){a.ajax(c,function(c){c=a.parse(c.responseText);m?b.call(m,c):b(c)})};a.getElementByPoint=function(c,a){var b,m,e=G.doc.elementFromPoint(c,a);if(G.win.opera&&\"svg\"==e.tagName){b=\n",
       "e;m=b.getBoundingClientRect();b=b.ownerDocument;var h=b.body,d=b.documentElement;b=m.top+(g.win.pageYOffset||d.scrollTop||h.scrollTop)-(d.clientTop||h.clientTop||0);m=m.left+(g.win.pageXOffset||d.scrollLeft||h.scrollLeft)-(d.clientLeft||h.clientLeft||0);h=e.createSVGRect();h.x=c-m;h.y=a-b;h.width=h.height=1;b=e.getIntersectionList(h,null);b.length&&(e=b[b.length-1])}return e?x(e):null};a.plugin=function(c){c(a,e,s,G,l)};return G.win.Snap=a}();C.plugin(function(a,k,y,M,A){function w(a,d,f,b,q,e){null==\n",
       "d&&\"[object SVGMatrix]\"==z.call(a)?(this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.e=a.e,this.f=a.f):null!=a?(this.a=+a,this.b=+d,this.c=+f,this.d=+b,this.e=+q,this.f=+e):(this.a=1,this.c=this.b=0,this.d=1,this.f=this.e=0)}var z=Object.prototype.toString,d=String,f=Math;(function(n){function k(a){return a[0]*a[0]+a[1]*a[1]}function p(a){var d=f.sqrt(k(a));a[0]&&(a[0]/=d);a[1]&&(a[1]/=d)}n.add=function(a,d,e,f,n,p){var k=[[],[],[] ],u=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1] ];d=[[a,\n",
       "e,n],[d,f,p],[0,0,1] ];a&&a instanceof w&&(d=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1] ]);for(a=0;3>a;a++)for(e=0;3>e;e++){for(f=n=0;3>f;f++)n+=u[a][f]*d[f][e];k[a][e]=n}this.a=k[0][0];this.b=k[1][0];this.c=k[0][1];this.d=k[1][1];this.e=k[0][2];this.f=k[1][2];return this};n.invert=function(){var a=this.a*this.d-this.b*this.c;return new w(this.d/a,-this.b/a,-this.c/a,this.a/a,(this.c*this.f-this.d*this.e)/a,(this.b*this.e-this.a*this.f)/a)};n.clone=function(){return new w(this.a,this.b,this.c,this.d,this.e,\n",
       "this.f)};n.translate=function(a,d){return this.add(1,0,0,1,a,d)};n.scale=function(a,d,e,f){null==d&&(d=a);(e||f)&&this.add(1,0,0,1,e,f);this.add(a,0,0,d,0,0);(e||f)&&this.add(1,0,0,1,-e,-f);return this};n.rotate=function(b,d,e){b=a.rad(b);d=d||0;e=e||0;var l=+f.cos(b).toFixed(9);b=+f.sin(b).toFixed(9);this.add(l,b,-b,l,d,e);return this.add(1,0,0,1,-d,-e)};n.x=function(a,d){return a*this.a+d*this.c+this.e};n.y=function(a,d){return a*this.b+d*this.d+this.f};n.get=function(a){return+this[d.fromCharCode(97+\n",
       "a)].toFixed(4)};n.toString=function(){return\"matrix(\"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+\")\"};n.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]};n.determinant=function(){return this.a*this.d-this.b*this.c};n.split=function(){var b={};b.dx=this.e;b.dy=this.f;var d=[[this.a,this.c],[this.b,this.d] ];b.scalex=f.sqrt(k(d[0]));p(d[0]);b.shear=d[0][0]*d[1][0]+d[0][1]*d[1][1];d[1]=[d[1][0]-d[0][0]*b.shear,d[1][1]-d[0][1]*b.shear];b.scaley=f.sqrt(k(d[1]));\n",
       "p(d[1]);b.shear/=b.scaley;0>this.determinant()&&(b.scalex=-b.scalex);var e=-d[0][1],d=d[1][1];0>d?(b.rotate=a.deg(f.acos(d)),0>e&&(b.rotate=360-b.rotate)):b.rotate=a.deg(f.asin(e));b.isSimple=!+b.shear.toFixed(9)&&(b.scalex.toFixed(9)==b.scaley.toFixed(9)||!b.rotate);b.isSuperSimple=!+b.shear.toFixed(9)&&b.scalex.toFixed(9)==b.scaley.toFixed(9)&&!b.rotate;b.noRotation=!+b.shear.toFixed(9)&&!b.rotate;return b};n.toTransformString=function(a){a=a||this.split();if(+a.shear.toFixed(9))return\"m\"+[this.get(0),\n",
       "this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)];a.scalex=+a.scalex.toFixed(4);a.scaley=+a.scaley.toFixed(4);a.rotate=+a.rotate.toFixed(4);return(a.dx||a.dy?\"t\"+[+a.dx.toFixed(4),+a.dy.toFixed(4)]:\"\")+(1!=a.scalex||1!=a.scaley?\"s\"+[a.scalex,a.scaley,0,0]:\"\")+(a.rotate?\"r\"+[+a.rotate.toFixed(4),0,0]:\"\")}})(w.prototype);a.Matrix=w;a.matrix=function(a,d,f,b,k,e){return new w(a,d,f,b,k,e)}});C.plugin(function(a,v,y,M,A){function w(h){return function(d){k.stop();d instanceof A&&1==d.node.childNodes.length&&\n",
       "(\"radialGradient\"==d.node.firstChild.tagName||\"linearGradient\"==d.node.firstChild.tagName||\"pattern\"==d.node.firstChild.tagName)&&(d=d.node.firstChild,b(this).appendChild(d),d=u(d));if(d instanceof v)if(\"radialGradient\"==d.type||\"linearGradient\"==d.type||\"pattern\"==d.type){d.node.id||e(d.node,{id:d.id});var f=l(d.node.id)}else f=d.attr(h);else f=a.color(d),f.error?(f=a(b(this).ownerSVGElement).gradient(d))?(f.node.id||e(f.node,{id:f.id}),f=l(f.node.id)):f=d:f=r(f);d={};d[h]=f;e(this.node,d);this.node.style[h]=\n",
       "x}}function z(a){k.stop();a==+a&&(a+=\"px\");this.node.style.fontSize=a}function d(a){var b=[];a=a.childNodes;for(var e=0,f=a.length;e<f;e++){var l=a[e];3==l.nodeType&&b.push(l.nodeValue);\"tspan\"==l.tagName&&(1==l.childNodes.length&&3==l.firstChild.nodeType?b.push(l.firstChild.nodeValue):b.push(d(l)))}return b}function f(){k.stop();return this.node.style.fontSize}var n=a._.make,u=a._.wrap,p=a.is,b=a._.getSomeDefs,q=/^url\\(#?([^)]+)\\)$/,e=a._.$,l=a.url,r=String,s=a._.separator,x=\"\";k.on(\"snap.util.attr.mask\",\n",
       "function(a){if(a instanceof v||a instanceof A){k.stop();a instanceof A&&1==a.node.childNodes.length&&(a=a.node.firstChild,b(this).appendChild(a),a=u(a));if(\"mask\"==a.type)var d=a;else d=n(\"mask\",b(this)),d.node.appendChild(a.node);!d.node.id&&e(d.node,{id:d.id});e(this.node,{mask:l(d.id)})}});(function(a){k.on(\"snap.util.attr.clip\",a);k.on(\"snap.util.attr.clip-path\",a);k.on(\"snap.util.attr.clipPath\",a)})(function(a){if(a instanceof v||a instanceof A){k.stop();if(\"clipPath\"==a.type)var d=a;else d=\n",
       "n(\"clipPath\",b(this)),d.node.appendChild(a.node),!d.node.id&&e(d.node,{id:d.id});e(this.node,{\"clip-path\":l(d.id)})}});k.on(\"snap.util.attr.fill\",w(\"fill\"));k.on(\"snap.util.attr.stroke\",w(\"stroke\"));var G=/^([lr])(?:\\(([^)]*)\\))?(.*)$/i;k.on(\"snap.util.grad.parse\",function(a){a=r(a);var b=a.match(G);if(!b)return null;a=b[1];var e=b[2],b=b[3],e=e.split(/\\s*,\\s*/).map(function(a){return+a==a?+a:a});1==e.length&&0==e[0]&&(e=[]);b=b.split(\"-\");b=b.map(function(a){a=a.split(\":\");var b={color:a[0]};a[1]&&\n",
       "(b.offset=parseFloat(a[1]));return b});return{type:a,params:e,stops:b}});k.on(\"snap.util.attr.d\",function(b){k.stop();p(b,\"array\")&&p(b[0],\"array\")&&(b=a.path.toString.call(b));b=r(b);b.match(/[ruo]/i)&&(b=a.path.toAbsolute(b));e(this.node,{d:b})})(-1);k.on(\"snap.util.attr.#text\",function(a){k.stop();a=r(a);for(a=M.doc.createTextNode(a);this.node.firstChild;)this.node.removeChild(this.node.firstChild);this.node.appendChild(a)})(-1);k.on(\"snap.util.attr.path\",function(a){k.stop();this.attr({d:a})})(-1);\n",
       "k.on(\"snap.util.attr.class\",function(a){k.stop();this.node.className.baseVal=a})(-1);k.on(\"snap.util.attr.viewBox\",function(a){a=p(a,\"object\")&&\"x\"in a?[a.x,a.y,a.width,a.height].join(\" \"):p(a,\"array\")?a.join(\" \"):a;e(this.node,{viewBox:a});k.stop()})(-1);k.on(\"snap.util.attr.transform\",function(a){this.transform(a);k.stop()})(-1);k.on(\"snap.util.attr.r\",function(a){\"rect\"==this.type&&(k.stop(),e(this.node,{rx:a,ry:a}))})(-1);k.on(\"snap.util.attr.textpath\",function(a){k.stop();if(\"text\"==this.type){var d,\n",
       "f;if(!a&&this.textPath){for(a=this.textPath;a.node.firstChild;)this.node.appendChild(a.node.firstChild);a.remove();delete this.textPath}else if(p(a,\"string\")?(d=b(this),a=u(d.parentNode).path(a),d.appendChild(a.node),d=a.id,a.attr({id:d})):(a=u(a),a instanceof v&&(d=a.attr(\"id\"),d||(d=a.id,a.attr({id:d})))),d)if(a=this.textPath,f=this.node,a)a.attr({\"xlink:href\":\"#\"+d});else{for(a=e(\"textPath\",{\"xlink:href\":\"#\"+d});f.firstChild;)a.appendChild(f.firstChild);f.appendChild(a);this.textPath=u(a)}}})(-1);\n",
       "k.on(\"snap.util.attr.text\",function(a){if(\"text\"==this.type){for(var b=this.node,d=function(a){var b=e(\"tspan\");if(p(a,\"array\"))for(var f=0;f<a.length;f++)b.appendChild(d(a[f]));else b.appendChild(M.doc.createTextNode(a));b.normalize&&b.normalize();return b};b.firstChild;)b.removeChild(b.firstChild);for(a=d(a);a.firstChild;)b.appendChild(a.firstChild)}k.stop()})(-1);k.on(\"snap.util.attr.fontSize\",z)(-1);k.on(\"snap.util.attr.font-size\",z)(-1);k.on(\"snap.util.getattr.transform\",function(){k.stop();\n",
       "return this.transform()})(-1);k.on(\"snap.util.getattr.textpath\",function(){k.stop();return this.textPath})(-1);(function(){function b(d){return function(){k.stop();var b=M.doc.defaultView.getComputedStyle(this.node,null).getPropertyValue(\"marker-\"+d);return\"none\"==b?b:a(M.doc.getElementById(b.match(q)[1]))}}function d(a){return function(b){k.stop();var d=\"marker\"+a.charAt(0).toUpperCase()+a.substring(1);if(\"\"==b||!b)this.node.style[d]=\"none\";else if(\"marker\"==b.type){var f=b.node.id;f||e(b.node,{id:b.id});\n",
       "this.node.style[d]=l(f)}}}k.on(\"snap.util.getattr.marker-end\",b(\"end\"))(-1);k.on(\"snap.util.getattr.markerEnd\",b(\"end\"))(-1);k.on(\"snap.util.getattr.marker-start\",b(\"start\"))(-1);k.on(\"snap.util.getattr.markerStart\",b(\"start\"))(-1);k.on(\"snap.util.getattr.marker-mid\",b(\"mid\"))(-1);k.on(\"snap.util.getattr.markerMid\",b(\"mid\"))(-1);k.on(\"snap.util.attr.marker-end\",d(\"end\"))(-1);k.on(\"snap.util.attr.markerEnd\",d(\"end\"))(-1);k.on(\"snap.util.attr.marker-start\",d(\"start\"))(-1);k.on(\"snap.util.attr.markerStart\",\n",
       "d(\"start\"))(-1);k.on(\"snap.util.attr.marker-mid\",d(\"mid\"))(-1);k.on(\"snap.util.attr.markerMid\",d(\"mid\"))(-1)})();k.on(\"snap.util.getattr.r\",function(){if(\"rect\"==this.type&&e(this.node,\"rx\")==e(this.node,\"ry\"))return k.stop(),e(this.node,\"rx\")})(-1);k.on(\"snap.util.getattr.text\",function(){if(\"text\"==this.type||\"tspan\"==this.type){k.stop();var a=d(this.node);return 1==a.length?a[0]:a}})(-1);k.on(\"snap.util.getattr.#text\",function(){return this.node.textContent})(-1);k.on(\"snap.util.getattr.viewBox\",\n",
       "function(){k.stop();var b=e(this.node,\"viewBox\");if(b)return b=b.split(s),a._.box(+b[0],+b[1],+b[2],+b[3])})(-1);k.on(\"snap.util.getattr.points\",function(){var a=e(this.node,\"points\");k.stop();if(a)return a.split(s)})(-1);k.on(\"snap.util.getattr.path\",function(){var a=e(this.node,\"d\");k.stop();return a})(-1);k.on(\"snap.util.getattr.class\",function(){return this.node.className.baseVal})(-1);k.on(\"snap.util.getattr.fontSize\",f)(-1);k.on(\"snap.util.getattr.font-size\",f)(-1)});C.plugin(function(a,v,y,\n",
       "M,A){function w(a){return a}function z(a){return function(b){return+b.toFixed(3)+a}}var d={\"+\":function(a,b){return a+b},\"-\":function(a,b){return a-b},\"/\":function(a,b){return a/b},\"*\":function(a,b){return a*b}},f=String,n=/[a-z]+$/i,u=/^\\s*([+\\-\\/*])\\s*=\\s*([\\d.eE+\\-]+)\\s*([^\\d\\s]+)?\\s*$/;k.on(\"snap.util.attr\",function(a){if(a=f(a).match(u)){var b=k.nt(),b=b.substring(b.lastIndexOf(\".\")+1),q=this.attr(b),e={};k.stop();var l=a[3]||\"\",r=q.match(n),s=d[a[1] ];r&&r==l?a=s(parseFloat(q),+a[2]):(q=this.asPX(b),\n",
       "a=s(this.asPX(b),this.asPX(b,a[2]+l)));isNaN(q)||isNaN(a)||(e[b]=a,this.attr(e))}})(-10);k.on(\"snap.util.equal\",function(a,b){var q=f(this.attr(a)||\"\"),e=f(b).match(u);if(e){k.stop();var l=e[3]||\"\",r=q.match(n),s=d[e[1] ];if(r&&r==l)return{from:parseFloat(q),to:s(parseFloat(q),+e[2]),f:z(r)};q=this.asPX(a);return{from:q,to:s(q,this.asPX(a,e[2]+l)),f:w}}})(-10)});C.plugin(function(a,v,y,M,A){var w=y.prototype,z=a.is;w.rect=function(a,d,k,p,b,q){var e;null==q&&(q=b);z(a,\"object\")&&\"[object Object]\"==\n",
       "a?e=a:null!=a&&(e={x:a,y:d,width:k,height:p},null!=b&&(e.rx=b,e.ry=q));return this.el(\"rect\",e)};w.circle=function(a,d,k){var p;z(a,\"object\")&&\"[object Object]\"==a?p=a:null!=a&&(p={cx:a,cy:d,r:k});return this.el(\"circle\",p)};var d=function(){function a(){this.parentNode.removeChild(this)}return function(d,k){var p=M.doc.createElement(\"img\"),b=M.doc.body;p.style.cssText=\"position:absolute;left:-9999em;top:-9999em\";p.onload=function(){k.call(p);p.onload=p.onerror=null;b.removeChild(p)};p.onerror=a;\n",
       "b.appendChild(p);p.src=d}}();w.image=function(f,n,k,p,b){var q=this.el(\"image\");if(z(f,\"object\")&&\"src\"in f)q.attr(f);else if(null!=f){var e={\"xlink:href\":f,preserveAspectRatio:\"none\"};null!=n&&null!=k&&(e.x=n,e.y=k);null!=p&&null!=b?(e.width=p,e.height=b):d(f,function(){a._.$(q.node,{width:this.offsetWidth,height:this.offsetHeight})});a._.$(q.node,e)}return q};w.ellipse=function(a,d,k,p){var b;z(a,\"object\")&&\"[object Object]\"==a?b=a:null!=a&&(b={cx:a,cy:d,rx:k,ry:p});return this.el(\"ellipse\",b)};\n",
       "w.path=function(a){var d;z(a,\"object\")&&!z(a,\"array\")?d=a:a&&(d={d:a});return this.el(\"path\",d)};w.group=w.g=function(a){var d=this.el(\"g\");1==arguments.length&&a&&!a.type?d.attr(a):arguments.length&&d.add(Array.prototype.slice.call(arguments,0));return d};w.svg=function(a,d,k,p,b,q,e,l){var r={};z(a,\"object\")&&null==d?r=a:(null!=a&&(r.x=a),null!=d&&(r.y=d),null!=k&&(r.width=k),null!=p&&(r.height=p),null!=b&&null!=q&&null!=e&&null!=l&&(r.viewBox=[b,q,e,l]));return this.el(\"svg\",r)};w.mask=function(a){var d=\n",
       "this.el(\"mask\");1==arguments.length&&a&&!a.type?d.attr(a):arguments.length&&d.add(Array.prototype.slice.call(arguments,0));return d};w.ptrn=function(a,d,k,p,b,q,e,l){if(z(a,\"object\"))var r=a;else arguments.length?(r={},null!=a&&(r.x=a),null!=d&&(r.y=d),null!=k&&(r.width=k),null!=p&&(r.height=p),null!=b&&null!=q&&null!=e&&null!=l&&(r.viewBox=[b,q,e,l])):r={patternUnits:\"userSpaceOnUse\"};return this.el(\"pattern\",r)};w.use=function(a){return null!=a?(make(\"use\",this.node),a instanceof v&&(a.attr(\"id\")||\n",
       "a.attr({id:ID()}),a=a.attr(\"id\")),this.el(\"use\",{\"xlink:href\":a})):v.prototype.use.call(this)};w.text=function(a,d,k){var p={};z(a,\"object\")?p=a:null!=a&&(p={x:a,y:d,text:k||\"\"});return this.el(\"text\",p)};w.line=function(a,d,k,p){var b={};z(a,\"object\")?b=a:null!=a&&(b={x1:a,x2:k,y1:d,y2:p});return this.el(\"line\",b)};w.polyline=function(a){1<arguments.length&&(a=Array.prototype.slice.call(arguments,0));var d={};z(a,\"object\")&&!z(a,\"array\")?d=a:null!=a&&(d={points:a});return this.el(\"polyline\",d)};\n",
       "w.polygon=function(a){1<arguments.length&&(a=Array.prototype.slice.call(arguments,0));var d={};z(a,\"object\")&&!z(a,\"array\")?d=a:null!=a&&(d={points:a});return this.el(\"polygon\",d)};(function(){function d(){return this.selectAll(\"stop\")}function n(b,d){var f=e(\"stop\"),k={offset:+d+\"%\"};b=a.color(b);k[\"stop-color\"]=b.hex;1>b.opacity&&(k[\"stop-opacity\"]=b.opacity);e(f,k);this.node.appendChild(f);return this}function u(){if(\"linearGradient\"==this.type){var b=e(this.node,\"x1\")||0,d=e(this.node,\"x2\")||\n",
       "1,f=e(this.node,\"y1\")||0,k=e(this.node,\"y2\")||0;return a._.box(b,f,math.abs(d-b),math.abs(k-f))}b=this.node.r||0;return a._.box((this.node.cx||0.5)-b,(this.node.cy||0.5)-b,2*b,2*b)}function p(a,d){function f(a,b){for(var d=(b-u)/(a-w),e=w;e<a;e++)h[e].offset=+(+u+d*(e-w)).toFixed(2);w=a;u=b}var n=k(\"snap.util.grad.parse\",null,d).firstDefined(),p;if(!n)return null;n.params.unshift(a);p=\"l\"==n.type.toLowerCase()?b.apply(0,n.params):q.apply(0,n.params);n.type!=n.type.toLowerCase()&&e(p.node,{gradientUnits:\"userSpaceOnUse\"});\n",
       "var h=n.stops,n=h.length,u=0,w=0;n--;for(var v=0;v<n;v++)\"offset\"in h[v]&&f(v,h[v].offset);h[n].offset=h[n].offset||100;f(n,h[n].offset);for(v=0;v<=n;v++){var y=h[v];p.addStop(y.color,y.offset)}return p}function b(b,k,p,q,w){b=a._.make(\"linearGradient\",b);b.stops=d;b.addStop=n;b.getBBox=u;null!=k&&e(b.node,{x1:k,y1:p,x2:q,y2:w});return b}function q(b,k,p,q,w,h){b=a._.make(\"radialGradient\",b);b.stops=d;b.addStop=n;b.getBBox=u;null!=k&&e(b.node,{cx:k,cy:p,r:q});null!=w&&null!=h&&e(b.node,{fx:w,fy:h});\n",
       "return b}var e=a._.$;w.gradient=function(a){return p(this.defs,a)};w.gradientLinear=function(a,d,e,f){return b(this.defs,a,d,e,f)};w.gradientRadial=function(a,b,d,e,f){return q(this.defs,a,b,d,e,f)};w.toString=function(){var b=this.node.ownerDocument,d=b.createDocumentFragment(),b=b.createElement(\"div\"),e=this.node.cloneNode(!0);d.appendChild(b);b.appendChild(e);a._.$(e,{xmlns:\"http://www.w3.org/2000/svg\"});b=b.innerHTML;d.removeChild(d.firstChild);return b};w.clear=function(){for(var a=this.node.firstChild,\n",
       "b;a;)b=a.nextSibling,\"defs\"!=a.tagName?a.parentNode.removeChild(a):w.clear.call({node:a}),a=b}})()});C.plugin(function(a,k,y,M){function A(a){var b=A.ps=A.ps||{};b[a]?b[a].sleep=100:b[a]={sleep:100};setTimeout(function(){for(var d in b)b[L](d)&&d!=a&&(b[d].sleep--,!b[d].sleep&&delete b[d])});return b[a]}function w(a,b,d,e){null==a&&(a=b=d=e=0);null==b&&(b=a.y,d=a.width,e=a.height,a=a.x);return{x:a,y:b,width:d,w:d,height:e,h:e,x2:a+d,y2:b+e,cx:a+d/2,cy:b+e/2,r1:F.min(d,e)/2,r2:F.max(d,e)/2,r0:F.sqrt(d*\n",
       "d+e*e)/2,path:s(a,b,d,e),vb:[a,b,d,e].join(\" \")}}function z(){return this.join(\",\").replace(N,\"$1\")}function d(a){a=C(a);a.toString=z;return a}function f(a,b,d,h,f,k,l,n,p){if(null==p)return e(a,b,d,h,f,k,l,n);if(0>p||e(a,b,d,h,f,k,l,n)<p)p=void 0;else{var q=0.5,O=1-q,s;for(s=e(a,b,d,h,f,k,l,n,O);0.01<Z(s-p);)q/=2,O+=(s<p?1:-1)*q,s=e(a,b,d,h,f,k,l,n,O);p=O}return u(a,b,d,h,f,k,l,n,p)}function n(b,d){function e(a){return+(+a).toFixed(3)}return a._.cacher(function(a,h,l){a instanceof k&&(a=a.attr(\"d\"));\n",
       "a=I(a);for(var n,p,D,q,O=\"\",s={},c=0,t=0,r=a.length;t<r;t++){D=a[t];if(\"M\"==D[0])n=+D[1],p=+D[2];else{q=f(n,p,D[1],D[2],D[3],D[4],D[5],D[6]);if(c+q>h){if(d&&!s.start){n=f(n,p,D[1],D[2],D[3],D[4],D[5],D[6],h-c);O+=[\"C\"+e(n.start.x),e(n.start.y),e(n.m.x),e(n.m.y),e(n.x),e(n.y)];if(l)return O;s.start=O;O=[\"M\"+e(n.x),e(n.y)+\"C\"+e(n.n.x),e(n.n.y),e(n.end.x),e(n.end.y),e(D[5]),e(D[6])].join();c+=q;n=+D[5];p=+D[6];continue}if(!b&&!d)return n=f(n,p,D[1],D[2],D[3],D[4],D[5],D[6],h-c)}c+=q;n=+D[5];p=+D[6]}O+=\n",
       "D.shift()+D}s.end=O;return n=b?c:d?s:u(n,p,D[0],D[1],D[2],D[3],D[4],D[5],1)},null,a._.clone)}function u(a,b,d,e,h,f,k,l,n){var p=1-n,q=ma(p,3),s=ma(p,2),c=n*n,t=c*n,r=q*a+3*s*n*d+3*p*n*n*h+t*k,q=q*b+3*s*n*e+3*p*n*n*f+t*l,s=a+2*n*(d-a)+c*(h-2*d+a),t=b+2*n*(e-b)+c*(f-2*e+b),x=d+2*n*(h-d)+c*(k-2*h+d),c=e+2*n*(f-e)+c*(l-2*f+e);a=p*a+n*d;b=p*b+n*e;h=p*h+n*k;f=p*f+n*l;l=90-180*F.atan2(s-x,t-c)/S;return{x:r,y:q,m:{x:s,y:t},n:{x:x,y:c},start:{x:a,y:b},end:{x:h,y:f},alpha:l}}function p(b,d,e,h,f,n,k,l){a.is(b,\n",
       "\"array\")||(b=[b,d,e,h,f,n,k,l]);b=U.apply(null,b);return w(b.min.x,b.min.y,b.max.x-b.min.x,b.max.y-b.min.y)}function b(a,b,d){return b>=a.x&&b<=a.x+a.width&&d>=a.y&&d<=a.y+a.height}function q(a,d){a=w(a);d=w(d);return b(d,a.x,a.y)||b(d,a.x2,a.y)||b(d,a.x,a.y2)||b(d,a.x2,a.y2)||b(a,d.x,d.y)||b(a,d.x2,d.y)||b(a,d.x,d.y2)||b(a,d.x2,d.y2)||(a.x<d.x2&&a.x>d.x||d.x<a.x2&&d.x>a.x)&&(a.y<d.y2&&a.y>d.y||d.y<a.y2&&d.y>a.y)}function e(a,b,d,e,h,f,n,k,l){null==l&&(l=1);l=(1<l?1:0>l?0:l)/2;for(var p=[-0.1252,\n",
       "0.1252,-0.3678,0.3678,-0.5873,0.5873,-0.7699,0.7699,-0.9041,0.9041,-0.9816,0.9816],q=[0.2491,0.2491,0.2335,0.2335,0.2032,0.2032,0.1601,0.1601,0.1069,0.1069,0.0472,0.0472],s=0,c=0;12>c;c++)var t=l*p[c]+l,r=t*(t*(-3*a+9*d-9*h+3*n)+6*a-12*d+6*h)-3*a+3*d,t=t*(t*(-3*b+9*e-9*f+3*k)+6*b-12*e+6*f)-3*b+3*e,s=s+q[c]*F.sqrt(r*r+t*t);return l*s}function l(a,b,d){a=I(a);b=I(b);for(var h,f,l,n,k,s,r,O,x,c,t=d?0:[],w=0,v=a.length;w<v;w++)if(x=a[w],\"M\"==x[0])h=k=x[1],f=s=x[2];else{\"C\"==x[0]?(x=[h,f].concat(x.slice(1)),\n",
       "h=x[6],f=x[7]):(x=[h,f,h,f,k,s,k,s],h=k,f=s);for(var G=0,y=b.length;G<y;G++)if(c=b[G],\"M\"==c[0])l=r=c[1],n=O=c[2];else{\"C\"==c[0]?(c=[l,n].concat(c.slice(1)),l=c[6],n=c[7]):(c=[l,n,l,n,r,O,r,O],l=r,n=O);var z;var K=x,B=c;z=d;var H=p(K),J=p(B);if(q(H,J)){for(var H=e.apply(0,K),J=e.apply(0,B),H=~~(H/8),J=~~(J/8),U=[],A=[],F={},M=z?0:[],P=0;P<H+1;P++){var C=u.apply(0,K.concat(P/H));U.push({x:C.x,y:C.y,t:P/H})}for(P=0;P<J+1;P++)C=u.apply(0,B.concat(P/J)),A.push({x:C.x,y:C.y,t:P/J});for(P=0;P<H;P++)for(K=\n",
       "0;K<J;K++){var Q=U[P],L=U[P+1],B=A[K],C=A[K+1],N=0.001>Z(L.x-Q.x)?\"y\":\"x\",S=0.001>Z(C.x-B.x)?\"y\":\"x\",R;R=Q.x;var Y=Q.y,V=L.x,ea=L.y,fa=B.x,ga=B.y,ha=C.x,ia=C.y;if(W(R,V)<X(fa,ha)||X(R,V)>W(fa,ha)||W(Y,ea)<X(ga,ia)||X(Y,ea)>W(ga,ia))R=void 0;else{var $=(R*ea-Y*V)*(fa-ha)-(R-V)*(fa*ia-ga*ha),aa=(R*ea-Y*V)*(ga-ia)-(Y-ea)*(fa*ia-ga*ha),ja=(R-V)*(ga-ia)-(Y-ea)*(fa-ha);if(ja){var $=$/ja,aa=aa/ja,ja=+$.toFixed(2),ba=+aa.toFixed(2);R=ja<+X(R,V).toFixed(2)||ja>+W(R,V).toFixed(2)||ja<+X(fa,ha).toFixed(2)||\n",
       "ja>+W(fa,ha).toFixed(2)||ba<+X(Y,ea).toFixed(2)||ba>+W(Y,ea).toFixed(2)||ba<+X(ga,ia).toFixed(2)||ba>+W(ga,ia).toFixed(2)?void 0:{x:$,y:aa}}else R=void 0}R&&F[R.x.toFixed(4)]!=R.y.toFixed(4)&&(F[R.x.toFixed(4)]=R.y.toFixed(4),Q=Q.t+Z((R[N]-Q[N])/(L[N]-Q[N]))*(L.t-Q.t),B=B.t+Z((R[S]-B[S])/(C[S]-B[S]))*(C.t-B.t),0<=Q&&1>=Q&&0<=B&&1>=B&&(z?M++:M.push({x:R.x,y:R.y,t1:Q,t2:B})))}z=M}else z=z?0:[];if(d)t+=z;else{H=0;for(J=z.length;H<J;H++)z[H].segment1=w,z[H].segment2=G,z[H].bez1=x,z[H].bez2=c;t=t.concat(z)}}}return t}\n",
       "function r(a){var b=A(a);if(b.bbox)return C(b.bbox);if(!a)return w();a=I(a);for(var d=0,e=0,h=[],f=[],l,n=0,k=a.length;n<k;n++)l=a[n],\"M\"==l[0]?(d=l[1],e=l[2],h.push(d),f.push(e)):(d=U(d,e,l[1],l[2],l[3],l[4],l[5],l[6]),h=h.concat(d.min.x,d.max.x),f=f.concat(d.min.y,d.max.y),d=l[5],e=l[6]);a=X.apply(0,h);l=X.apply(0,f);h=W.apply(0,h);f=W.apply(0,f);f=w(a,l,h-a,f-l);b.bbox=C(f);return f}function s(a,b,d,e,h){if(h)return[[\"M\",+a+ +h,b],[\"l\",d-2*h,0],[\"a\",h,h,0,0,1,h,h],[\"l\",0,e-2*h],[\"a\",h,h,0,0,1,\n",
       "-h,h],[\"l\",2*h-d,0],[\"a\",h,h,0,0,1,-h,-h],[\"l\",0,2*h-e],[\"a\",h,h,0,0,1,h,-h],[\"z\"] ];a=[[\"M\",a,b],[\"l\",d,0],[\"l\",0,e],[\"l\",-d,0],[\"z\"] ];a.toString=z;return a}function x(a,b,d,e,h){null==h&&null==e&&(e=d);a=+a;b=+b;d=+d;e=+e;if(null!=h){var f=Math.PI/180,l=a+d*Math.cos(-e*f);a+=d*Math.cos(-h*f);var n=b+d*Math.sin(-e*f);b+=d*Math.sin(-h*f);d=[[\"M\",l,n],[\"A\",d,d,0,+(180<h-e),0,a,b] ]}else d=[[\"M\",a,b],[\"m\",0,-e],[\"a\",d,e,0,1,1,0,2*e],[\"a\",d,e,0,1,1,0,-2*e],[\"z\"] ];d.toString=z;return d}function G(b){var e=\n",
       "A(b);if(e.abs)return d(e.abs);Q(b,\"array\")&&Q(b&&b[0],\"array\")||(b=a.parsePathString(b));if(!b||!b.length)return[[\"M\",0,0] ];var h=[],f=0,l=0,n=0,k=0,p=0;\"M\"==b[0][0]&&(f=+b[0][1],l=+b[0][2],n=f,k=l,p++,h[0]=[\"M\",f,l]);for(var q=3==b.length&&\"M\"==b[0][0]&&\"R\"==b[1][0].toUpperCase()&&\"Z\"==b[2][0].toUpperCase(),s,r,w=p,c=b.length;w<c;w++){h.push(s=[]);r=b[w];p=r[0];if(p!=p.toUpperCase())switch(s[0]=p.toUpperCase(),s[0]){case \"A\":s[1]=r[1];s[2]=r[2];s[3]=r[3];s[4]=r[4];s[5]=r[5];s[6]=+r[6]+f;s[7]=+r[7]+\n",
       "l;break;case \"V\":s[1]=+r[1]+l;break;case \"H\":s[1]=+r[1]+f;break;case \"R\":for(var t=[f,l].concat(r.slice(1)),u=2,v=t.length;u<v;u++)t[u]=+t[u]+f,t[++u]=+t[u]+l;h.pop();h=h.concat(P(t,q));break;case \"O\":h.pop();t=x(f,l,r[1],r[2]);t.push(t[0]);h=h.concat(t);break;case \"U\":h.pop();h=h.concat(x(f,l,r[1],r[2],r[3]));s=[\"U\"].concat(h[h.length-1].slice(-2));break;case \"M\":n=+r[1]+f,k=+r[2]+l;default:for(u=1,v=r.length;u<v;u++)s[u]=+r[u]+(u%2?f:l)}else if(\"R\"==p)t=[f,l].concat(r.slice(1)),h.pop(),h=h.concat(P(t,\n",
       "q)),s=[\"R\"].concat(r.slice(-2));else if(\"O\"==p)h.pop(),t=x(f,l,r[1],r[2]),t.push(t[0]),h=h.concat(t);else if(\"U\"==p)h.pop(),h=h.concat(x(f,l,r[1],r[2],r[3])),s=[\"U\"].concat(h[h.length-1].slice(-2));else for(t=0,u=r.length;t<u;t++)s[t]=r[t];p=p.toUpperCase();if(\"O\"!=p)switch(s[0]){case \"Z\":f=+n;l=+k;break;case \"H\":f=s[1];break;case \"V\":l=s[1];break;case \"M\":n=s[s.length-2],k=s[s.length-1];default:f=s[s.length-2],l=s[s.length-1]}}h.toString=z;e.abs=d(h);return h}function h(a,b,d,e){return[a,b,d,e,d,\n",
       "e]}function J(a,b,d,e,h,f){var l=1/3,n=2/3;return[l*a+n*d,l*b+n*e,l*h+n*d,l*f+n*e,h,f]}function K(b,d,e,h,f,l,n,k,p,s){var r=120*S/180,q=S/180*(+f||0),c=[],t,x=a._.cacher(function(a,b,c){var d=a*F.cos(c)-b*F.sin(c);a=a*F.sin(c)+b*F.cos(c);return{x:d,y:a}});if(s)v=s[0],t=s[1],l=s[2],u=s[3];else{t=x(b,d,-q);b=t.x;d=t.y;t=x(k,p,-q);k=t.x;p=t.y;F.cos(S/180*f);F.sin(S/180*f);t=(b-k)/2;v=(d-p)/2;u=t*t/(e*e)+v*v/(h*h);1<u&&(u=F.sqrt(u),e*=u,h*=u);var u=e*e,w=h*h,u=(l==n?-1:1)*F.sqrt(Z((u*w-u*v*v-w*t*t)/\n",
       "(u*v*v+w*t*t)));l=u*e*v/h+(b+k)/2;var u=u*-h*t/e+(d+p)/2,v=F.asin(((d-u)/h).toFixed(9));t=F.asin(((p-u)/h).toFixed(9));v=b<l?S-v:v;t=k<l?S-t:t;0>v&&(v=2*S+v);0>t&&(t=2*S+t);n&&v>t&&(v-=2*S);!n&&t>v&&(t-=2*S)}if(Z(t-v)>r){var c=t,w=k,G=p;t=v+r*(n&&t>v?1:-1);k=l+e*F.cos(t);p=u+h*F.sin(t);c=K(k,p,e,h,f,0,n,w,G,[t,c,l,u])}l=t-v;f=F.cos(v);r=F.sin(v);n=F.cos(t);t=F.sin(t);l=F.tan(l/4);e=4/3*e*l;l*=4/3*h;h=[b,d];b=[b+e*r,d-l*f];d=[k+e*t,p-l*n];k=[k,p];b[0]=2*h[0]-b[0];b[1]=2*h[1]-b[1];if(s)return[b,d,k].concat(c);\n",
       "c=[b,d,k].concat(c).join().split(\",\");s=[];k=0;for(p=c.length;k<p;k++)s[k]=k%2?x(c[k-1],c[k],q).y:x(c[k],c[k+1],q).x;return s}function U(a,b,d,e,h,f,l,k){for(var n=[],p=[[],[] ],s,r,c,t,q=0;2>q;++q)0==q?(r=6*a-12*d+6*h,s=-3*a+9*d-9*h+3*l,c=3*d-3*a):(r=6*b-12*e+6*f,s=-3*b+9*e-9*f+3*k,c=3*e-3*b),1E-12>Z(s)?1E-12>Z(r)||(s=-c/r,0<s&&1>s&&n.push(s)):(t=r*r-4*c*s,c=F.sqrt(t),0>t||(t=(-r+c)/(2*s),0<t&&1>t&&n.push(t),s=(-r-c)/(2*s),0<s&&1>s&&n.push(s)));for(r=q=n.length;q--;)s=n[q],c=1-s,p[0][q]=c*c*c*a+3*\n",
       "c*c*s*d+3*c*s*s*h+s*s*s*l,p[1][q]=c*c*c*b+3*c*c*s*e+3*c*s*s*f+s*s*s*k;p[0][r]=a;p[1][r]=b;p[0][r+1]=l;p[1][r+1]=k;p[0].length=p[1].length=r+2;return{min:{x:X.apply(0,p[0]),y:X.apply(0,p[1])},max:{x:W.apply(0,p[0]),y:W.apply(0,p[1])}}}function I(a,b){var e=!b&&A(a);if(!b&&e.curve)return d(e.curve);var f=G(a),l=b&&G(b),n={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},k={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},p=function(a,b,c){if(!a)return[\"C\",b.x,b.y,b.x,b.y,b.x,b.y];a[0]in{T:1,Q:1}||(b.qx=b.qy=null);\n",
       "switch(a[0]){case \"M\":b.X=a[1];b.Y=a[2];break;case \"A\":a=[\"C\"].concat(K.apply(0,[b.x,b.y].concat(a.slice(1))));break;case \"S\":\"C\"==c||\"S\"==c?(c=2*b.x-b.bx,b=2*b.y-b.by):(c=b.x,b=b.y);a=[\"C\",c,b].concat(a.slice(1));break;case \"T\":\"Q\"==c||\"T\"==c?(b.qx=2*b.x-b.qx,b.qy=2*b.y-b.qy):(b.qx=b.x,b.qy=b.y);a=[\"C\"].concat(J(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case \"Q\":b.qx=a[1];b.qy=a[2];a=[\"C\"].concat(J(b.x,b.y,a[1],a[2],a[3],a[4]));break;case \"L\":a=[\"C\"].concat(h(b.x,b.y,a[1],a[2]));break;case \"H\":a=[\"C\"].concat(h(b.x,\n",
       "b.y,a[1],b.y));break;case \"V\":a=[\"C\"].concat(h(b.x,b.y,b.x,a[1]));break;case \"Z\":a=[\"C\"].concat(h(b.x,b.y,b.X,b.Y))}return a},s=function(a,b){if(7<a[b].length){a[b].shift();for(var c=a[b];c.length;)q[b]=\"A\",l&&(u[b]=\"A\"),a.splice(b++,0,[\"C\"].concat(c.splice(0,6)));a.splice(b,1);v=W(f.length,l&&l.length||0)}},r=function(a,b,c,d,e){a&&b&&\"M\"==a[e][0]&&\"M\"!=b[e][0]&&(b.splice(e,0,[\"M\",d.x,d.y]),c.bx=0,c.by=0,c.x=a[e][1],c.y=a[e][2],v=W(f.length,l&&l.length||0))},q=[],u=[],c=\"\",t=\"\",x=0,v=W(f.length,\n",
       "l&&l.length||0);for(;x<v;x++){f[x]&&(c=f[x][0]);\"C\"!=c&&(q[x]=c,x&&(t=q[x-1]));f[x]=p(f[x],n,t);\"A\"!=q[x]&&\"C\"==c&&(q[x]=\"C\");s(f,x);l&&(l[x]&&(c=l[x][0]),\"C\"!=c&&(u[x]=c,x&&(t=u[x-1])),l[x]=p(l[x],k,t),\"A\"!=u[x]&&\"C\"==c&&(u[x]=\"C\"),s(l,x));r(f,l,n,k,x);r(l,f,k,n,x);var w=f[x],z=l&&l[x],y=w.length,U=l&&z.length;n.x=w[y-2];n.y=w[y-1];n.bx=$(w[y-4])||n.x;n.by=$(w[y-3])||n.y;k.bx=l&&($(z[U-4])||k.x);k.by=l&&($(z[U-3])||k.y);k.x=l&&z[U-2];k.y=l&&z[U-1]}l||(e.curve=d(f));return l?[f,l]:f}function P(a,\n",
       "b){for(var d=[],e=0,h=a.length;h-2*!b>e;e+=2){var f=[{x:+a[e-2],y:+a[e-1]},{x:+a[e],y:+a[e+1]},{x:+a[e+2],y:+a[e+3]},{x:+a[e+4],y:+a[e+5]}];b?e?h-4==e?f[3]={x:+a[0],y:+a[1]}:h-2==e&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[h-2],y:+a[h-1]}:h-4==e?f[3]=f[2]:e||(f[0]={x:+a[e],y:+a[e+1]});d.push([\"C\",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return d}y=k.prototype;var Q=a.is,C=a._.clone,L=\"hasOwnProperty\",\n",
       "N=/,?([a-z]),?/gi,$=parseFloat,F=Math,S=F.PI,X=F.min,W=F.max,ma=F.pow,Z=F.abs;M=n(1);var na=n(),ba=n(0,1),V=a._unit2px;a.path=A;a.path.getTotalLength=M;a.path.getPointAtLength=na;a.path.getSubpath=function(a,b,d){if(1E-6>this.getTotalLength(a)-d)return ba(a,b).end;a=ba(a,d,1);return b?ba(a,b).end:a};y.getTotalLength=function(){if(this.node.getTotalLength)return this.node.getTotalLength()};y.getPointAtLength=function(a){return na(this.attr(\"d\"),a)};y.getSubpath=function(b,d){return a.path.getSubpath(this.attr(\"d\"),\n",
       "b,d)};a._.box=w;a.path.findDotsAtSegment=u;a.path.bezierBBox=p;a.path.isPointInsideBBox=b;a.path.isBBoxIntersect=q;a.path.intersection=function(a,b){return l(a,b)};a.path.intersectionNumber=function(a,b){return l(a,b,1)};a.path.isPointInside=function(a,d,e){var h=r(a);return b(h,d,e)&&1==l(a,[[\"M\",d,e],[\"H\",h.x2+10] ],1)%2};a.path.getBBox=r;a.path.get={path:function(a){return a.attr(\"path\")},circle:function(a){a=V(a);return x(a.cx,a.cy,a.r)},ellipse:function(a){a=V(a);return x(a.cx||0,a.cy||0,a.rx,\n",
       "a.ry)},rect:function(a){a=V(a);return s(a.x||0,a.y||0,a.width,a.height,a.rx,a.ry)},image:function(a){a=V(a);return s(a.x||0,a.y||0,a.width,a.height)},line:function(a){return\"M\"+[a.attr(\"x1\")||0,a.attr(\"y1\")||0,a.attr(\"x2\"),a.attr(\"y2\")]},polyline:function(a){return\"M\"+a.attr(\"points\")},polygon:function(a){return\"M\"+a.attr(\"points\")+\"z\"},deflt:function(a){a=a.node.getBBox();return s(a.x,a.y,a.width,a.height)}};a.path.toRelative=function(b){var e=A(b),h=String.prototype.toLowerCase;if(e.rel)return d(e.rel);\n",
       "a.is(b,\"array\")&&a.is(b&&b[0],\"array\")||(b=a.parsePathString(b));var f=[],l=0,n=0,k=0,p=0,s=0;\"M\"==b[0][0]&&(l=b[0][1],n=b[0][2],k=l,p=n,s++,f.push([\"M\",l,n]));for(var r=b.length;s<r;s++){var q=f[s]=[],x=b[s];if(x[0]!=h.call(x[0]))switch(q[0]=h.call(x[0]),q[0]){case \"a\":q[1]=x[1];q[2]=x[2];q[3]=x[3];q[4]=x[4];q[5]=x[5];q[6]=+(x[6]-l).toFixed(3);q[7]=+(x[7]-n).toFixed(3);break;case \"v\":q[1]=+(x[1]-n).toFixed(3);break;case \"m\":k=x[1],p=x[2];default:for(var c=1,t=x.length;c<t;c++)q[c]=+(x[c]-(c%2?l:\n",
       "n)).toFixed(3)}else for(f[s]=[],\"m\"==x[0]&&(k=x[1]+l,p=x[2]+n),q=0,c=x.length;q<c;q++)f[s][q]=x[q];x=f[s].length;switch(f[s][0]){case \"z\":l=k;n=p;break;case \"h\":l+=+f[s][x-1];break;case \"v\":n+=+f[s][x-1];break;default:l+=+f[s][x-2],n+=+f[s][x-1]}}f.toString=z;e.rel=d(f);return f};a.path.toAbsolute=G;a.path.toCubic=I;a.path.map=function(a,b){if(!b)return a;var d,e,h,f,l,n,k;a=I(a);h=0;for(l=a.length;h<l;h++)for(k=a[h],f=1,n=k.length;f<n;f+=2)d=b.x(k[f],k[f+1]),e=b.y(k[f],k[f+1]),k[f]=d,k[f+1]=e;return a};\n",
       "a.path.toString=z;a.path.clone=d});C.plugin(function(a,v,y,C){var A=Math.max,w=Math.min,z=function(a){this.items=[];this.bindings={};this.length=0;this.type=\"set\";if(a)for(var f=0,n=a.length;f<n;f++)a[f]&&(this[this.items.length]=this.items[this.items.length]=a[f],this.length++)};v=z.prototype;v.push=function(){for(var a,f,n=0,k=arguments.length;n<k;n++)if(a=arguments[n])f=this.items.length,this[f]=this.items[f]=a,this.length++;return this};v.pop=function(){this.length&&delete this[this.length--];\n",
       "return this.items.pop()};v.forEach=function(a,f){for(var n=0,k=this.items.length;n<k&&!1!==a.call(f,this.items[n],n);n++);return this};v.animate=function(d,f,n,u){\"function\"!=typeof n||n.length||(u=n,n=L.linear);d instanceof a._.Animation&&(u=d.callback,n=d.easing,f=n.dur,d=d.attr);var p=arguments;if(a.is(d,\"array\")&&a.is(p[p.length-1],\"array\"))var b=!0;var q,e=function(){q?this.b=q:q=this.b},l=0,r=u&&function(){l++==this.length&&u.call(this)};return this.forEach(function(a,l){k.once(\"snap.animcreated.\"+\n",
       "a.id,e);b?p[l]&&a.animate.apply(a,p[l]):a.animate(d,f,n,r)})};v.remove=function(){for(;this.length;)this.pop().remove();return this};v.bind=function(a,f,k){var u={};if(\"function\"==typeof f)this.bindings[a]=f;else{var p=k||a;this.bindings[a]=function(a){u[p]=a;f.attr(u)}}return this};v.attr=function(a){var f={},k;for(k in a)if(this.bindings[k])this.bindings[k](a[k]);else f[k]=a[k];a=0;for(k=this.items.length;a<k;a++)this.items[a].attr(f);return this};v.clear=function(){for(;this.length;)this.pop()};\n",
       "v.splice=function(a,f,k){a=0>a?A(this.length+a,0):a;f=A(0,w(this.length-a,f));var u=[],p=[],b=[],q;for(q=2;q<arguments.length;q++)b.push(arguments[q]);for(q=0;q<f;q++)p.push(this[a+q]);for(;q<this.length-a;q++)u.push(this[a+q]);var e=b.length;for(q=0;q<e+u.length;q++)this.items[a+q]=this[a+q]=q<e?b[q]:u[q-e];for(q=this.items.length=this.length-=f-e;this[q];)delete this[q++];return new z(p)};v.exclude=function(a){for(var f=0,k=this.length;f<k;f++)if(this[f]==a)return this.splice(f,1),!0;return!1};\n",
       "v.insertAfter=function(a){for(var f=this.items.length;f--;)this.items[f].insertAfter(a);return this};v.getBBox=function(){for(var a=[],f=[],k=[],u=[],p=this.items.length;p--;)if(!this.items[p].removed){var b=this.items[p].getBBox();a.push(b.x);f.push(b.y);k.push(b.x+b.width);u.push(b.y+b.height)}a=w.apply(0,a);f=w.apply(0,f);k=A.apply(0,k);u=A.apply(0,u);return{x:a,y:f,x2:k,y2:u,width:k-a,height:u-f,cx:a+(k-a)/2,cy:f+(u-f)/2}};v.clone=function(a){a=new z;for(var f=0,k=this.items.length;f<k;f++)a.push(this.items[f].clone());\n",
       "return a};v.toString=function(){return\"Snap\\u2018s set\"};v.type=\"set\";a.set=function(){var a=new z;arguments.length&&a.push.apply(a,Array.prototype.slice.call(arguments,0));return a}});C.plugin(function(a,v,y,C){function A(a){var b=a[0];switch(b.toLowerCase()){case \"t\":return[b,0,0];case \"m\":return[b,1,0,0,1,0,0];case \"r\":return 4==a.length?[b,0,a[2],a[3] ]:[b,0];case \"s\":return 5==a.length?[b,1,1,a[3],a[4] ]:3==a.length?[b,1,1]:[b,1]}}function w(b,d,f){d=q(d).replace(/\\.{3}|\\u2026/g,b);b=a.parseTransformString(b)||\n",
       "[];d=a.parseTransformString(d)||[];for(var k=Math.max(b.length,d.length),p=[],v=[],h=0,w,z,y,I;h<k;h++){y=b[h]||A(d[h]);I=d[h]||A(y);if(y[0]!=I[0]||\"r\"==y[0].toLowerCase()&&(y[2]!=I[2]||y[3]!=I[3])||\"s\"==y[0].toLowerCase()&&(y[3]!=I[3]||y[4]!=I[4])){b=a._.transform2matrix(b,f());d=a._.transform2matrix(d,f());p=[[\"m\",b.a,b.b,b.c,b.d,b.e,b.f] ];v=[[\"m\",d.a,d.b,d.c,d.d,d.e,d.f] ];break}p[h]=[];v[h]=[];w=0;for(z=Math.max(y.length,I.length);w<z;w++)w in y&&(p[h][w]=y[w]),w in I&&(v[h][w]=I[w])}return{from:u(p),\n",
       "to:u(v),f:n(p)}}function z(a){return a}function d(a){return function(b){return+b.toFixed(3)+a}}function f(b){return a.rgb(b[0],b[1],b[2])}function n(a){var b=0,d,f,k,n,h,p,q=[];d=0;for(f=a.length;d<f;d++){h=\"[\";p=['\"'+a[d][0]+'\"'];k=1;for(n=a[d].length;k<n;k++)p[k]=\"val[\"+b++ +\"]\";h+=p+\"]\";q[d]=h}return Function(\"val\",\"return Snap.path.toString.call([\"+q+\"])\")}function u(a){for(var b=[],d=0,f=a.length;d<f;d++)for(var k=1,n=a[d].length;k<n;k++)b.push(a[d][k]);return b}var p={},b=/[a-z]+$/i,q=String;\n",
       "p.stroke=p.fill=\"colour\";v.prototype.equal=function(a,b){return k(\"snap.util.equal\",this,a,b).firstDefined()};k.on(\"snap.util.equal\",function(e,k){var r,s;r=q(this.attr(e)||\"\");var x=this;if(r==+r&&k==+k)return{from:+r,to:+k,f:z};if(\"colour\"==p[e])return r=a.color(r),s=a.color(k),{from:[r.r,r.g,r.b,r.opacity],to:[s.r,s.g,s.b,s.opacity],f:f};if(\"transform\"==e||\"gradientTransform\"==e||\"patternTransform\"==e)return k instanceof a.Matrix&&(k=k.toTransformString()),a._.rgTransform.test(k)||(k=a._.svgTransform2string(k)),\n",
       "w(r,k,function(){return x.getBBox(1)});if(\"d\"==e||\"path\"==e)return r=a.path.toCubic(r,k),{from:u(r[0]),to:u(r[1]),f:n(r[0])};if(\"points\"==e)return r=q(r).split(a._.separator),s=q(k).split(a._.separator),{from:r,to:s,f:function(a){return a}};aUnit=r.match(b);s=q(k).match(b);return aUnit&&aUnit==s?{from:parseFloat(r),to:parseFloat(k),f:d(aUnit)}:{from:this.asPX(e),to:this.asPX(e,k),f:z}})});C.plugin(function(a,v,y,C){var A=v.prototype,w=\"createTouch\"in C.doc;v=\"click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel\".split(\" \");\n",
       "var z={mousedown:\"touchstart\",mousemove:\"touchmove\",mouseup:\"touchend\"},d=function(a,b){var d=\"y\"==a?\"scrollTop\":\"scrollLeft\",e=b&&b.node?b.node.ownerDocument:C.doc;return e[d in e.documentElement?\"documentElement\":\"body\"][d]},f=function(){this.returnValue=!1},n=function(){return this.originalEvent.preventDefault()},u=function(){this.cancelBubble=!0},p=function(){return this.originalEvent.stopPropagation()},b=function(){if(C.doc.addEventListener)return function(a,b,e,f){var k=w&&z[b]?z[b]:b,l=function(k){var l=\n",
       "d(\"y\",f),q=d(\"x\",f);if(w&&z.hasOwnProperty(b))for(var r=0,u=k.targetTouches&&k.targetTouches.length;r<u;r++)if(k.targetTouches[r].target==a||a.contains(k.targetTouches[r].target)){u=k;k=k.targetTouches[r];k.originalEvent=u;k.preventDefault=n;k.stopPropagation=p;break}return e.call(f,k,k.clientX+q,k.clientY+l)};b!==k&&a.addEventListener(b,l,!1);a.addEventListener(k,l,!1);return function(){b!==k&&a.removeEventListener(b,l,!1);a.removeEventListener(k,l,!1);return!0}};if(C.doc.attachEvent)return function(a,\n",
       "b,e,h){var k=function(a){a=a||h.node.ownerDocument.window.event;var b=d(\"y\",h),k=d(\"x\",h),k=a.clientX+k,b=a.clientY+b;a.preventDefault=a.preventDefault||f;a.stopPropagation=a.stopPropagation||u;return e.call(h,a,k,b)};a.attachEvent(\"on\"+b,k);return function(){a.detachEvent(\"on\"+b,k);return!0}}}(),q=[],e=function(a){for(var b=a.clientX,e=a.clientY,f=d(\"y\"),l=d(\"x\"),n,p=q.length;p--;){n=q[p];if(w)for(var r=a.touches&&a.touches.length,u;r--;){if(u=a.touches[r],u.identifier==n.el._drag.id||n.el.node.contains(u.target)){b=\n",
       "u.clientX;e=u.clientY;(a.originalEvent?a.originalEvent:a).preventDefault();break}}else a.preventDefault();b+=l;e+=f;k(\"snap.drag.move.\"+n.el.id,n.move_scope||n.el,b-n.el._drag.x,e-n.el._drag.y,b,e,a)}},l=function(b){a.unmousemove(e).unmouseup(l);for(var d=q.length,f;d--;)f=q[d],f.el._drag={},k(\"snap.drag.end.\"+f.el.id,f.end_scope||f.start_scope||f.move_scope||f.el,b);q=[]};for(y=v.length;y--;)(function(d){a[d]=A[d]=function(e,f){a.is(e,\"function\")&&(this.events=this.events||[],this.events.push({name:d,\n",
       "f:e,unbind:b(this.node||document,d,e,f||this)}));return this};a[\"un\"+d]=A[\"un\"+d]=function(a){for(var b=this.events||[],e=b.length;e--;)if(b[e].name==d&&(b[e].f==a||!a)){b[e].unbind();b.splice(e,1);!b.length&&delete this.events;break}return this}})(v[y]);A.hover=function(a,b,d,e){return this.mouseover(a,d).mouseout(b,e||d)};A.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var r=[];A.drag=function(b,d,f,h,n,p){function u(r,v,w){(r.originalEvent||r).preventDefault();this._drag.x=v;\n",
       "this._drag.y=w;this._drag.id=r.identifier;!q.length&&a.mousemove(e).mouseup(l);q.push({el:this,move_scope:h,start_scope:n,end_scope:p});d&&k.on(\"snap.drag.start.\"+this.id,d);b&&k.on(\"snap.drag.move.\"+this.id,b);f&&k.on(\"snap.drag.end.\"+this.id,f);k(\"snap.drag.start.\"+this.id,n||h||this,v,w,r)}if(!arguments.length){var v;return this.drag(function(a,b){this.attr({transform:v+(v?\"T\":\"t\")+[a,b]})},function(){v=this.transform().local})}this._drag={};r.push({el:this,start:u});this.mousedown(u);return this};\n",
       "A.undrag=function(){for(var b=r.length;b--;)r[b].el==this&&(this.unmousedown(r[b].start),r.splice(b,1),k.unbind(\"snap.drag.*.\"+this.id));!r.length&&a.unmousemove(e).unmouseup(l);return this}});C.plugin(function(a,v,y,C){y=y.prototype;var A=/^\\s*url\\((.+)\\)/,w=String,z=a._.$;a.filter={};y.filter=function(d){var f=this;\"svg\"!=f.type&&(f=f.paper);d=a.parse(w(d));var k=a._.id(),u=z(\"filter\");z(u,{id:k,filterUnits:\"userSpaceOnUse\"});u.appendChild(d.node);f.defs.appendChild(u);return new v(u)};k.on(\"snap.util.getattr.filter\",\n",
       "function(){k.stop();var d=z(this.node,\"filter\");if(d)return(d=w(d).match(A))&&a.select(d[1])});k.on(\"snap.util.attr.filter\",function(d){if(d instanceof v&&\"filter\"==d.type){k.stop();var f=d.node.id;f||(z(d.node,{id:d.id}),f=d.id);z(this.node,{filter:a.url(f)})}d&&\"none\"!=d||(k.stop(),this.node.removeAttribute(\"filter\"))});a.filter.blur=function(d,f){null==d&&(d=2);return a.format('<feGaussianBlur stdDeviation=\"{def}\"/>',{def:null==f?d:[d,f]})};a.filter.blur.toString=function(){return this()};a.filter.shadow=\n",
       "function(d,f,k,u,p){\"string\"==typeof k&&(p=u=k,k=4);\"string\"!=typeof u&&(p=u,u=\"#000\");null==k&&(k=4);null==p&&(p=1);null==d&&(d=0,f=2);null==f&&(f=d);u=a.color(u||\"#000\");return a.format('<feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"{blur}\"/><feOffset dx=\"{dx}\" dy=\"{dy}\" result=\"offsetblur\"/><feFlood flood-color=\"{color}\"/><feComposite in2=\"offsetblur\" operator=\"in\"/><feComponentTransfer><feFuncA type=\"linear\" slope=\"{opacity}\"/></feComponentTransfer><feMerge><feMergeNode/><feMergeNode in=\"SourceGraphic\"/></feMerge>',\n",
       "{color:u,dx:d,dy:f,blur:k,opacity:p})};a.filter.shadow.toString=function(){return this()};a.filter.grayscale=function(d){null==d&&(d=1);return a.format('<feColorMatrix type=\"matrix\" values=\"{a} {b} {c} 0 0 {d} {e} {f} 0 0 {g} {b} {h} 0 0 0 0 0 1 0\"/>',{a:0.2126+0.7874*(1-d),b:0.7152-0.7152*(1-d),c:0.0722-0.0722*(1-d),d:0.2126-0.2126*(1-d),e:0.7152+0.2848*(1-d),f:0.0722-0.0722*(1-d),g:0.2126-0.2126*(1-d),h:0.0722+0.9278*(1-d)})};a.filter.grayscale.toString=function(){return this()};a.filter.sepia=\n",
       "function(d){null==d&&(d=1);return a.format('<feColorMatrix type=\"matrix\" values=\"{a} {b} {c} 0 0 {d} {e} {f} 0 0 {g} {h} {i} 0 0 0 0 0 1 0\"/>',{a:0.393+0.607*(1-d),b:0.769-0.769*(1-d),c:0.189-0.189*(1-d),d:0.349-0.349*(1-d),e:0.686+0.314*(1-d),f:0.168-0.168*(1-d),g:0.272-0.272*(1-d),h:0.534-0.534*(1-d),i:0.131+0.869*(1-d)})};a.filter.sepia.toString=function(){return this()};a.filter.saturate=function(d){null==d&&(d=1);return a.format('<feColorMatrix type=\"saturate\" values=\"{amount}\"/>',{amount:1-\n",
       "d})};a.filter.saturate.toString=function(){return this()};a.filter.hueRotate=function(d){return a.format('<feColorMatrix type=\"hueRotate\" values=\"{angle}\"/>',{angle:d||0})};a.filter.hueRotate.toString=function(){return this()};a.filter.invert=function(d){null==d&&(d=1);return a.format('<feComponentTransfer><feFuncR type=\"table\" tableValues=\"{amount} {amount2}\"/><feFuncG type=\"table\" tableValues=\"{amount} {amount2}\"/><feFuncB type=\"table\" tableValues=\"{amount} {amount2}\"/></feComponentTransfer>',{amount:d,\n",
       "amount2:1-d})};a.filter.invert.toString=function(){return this()};a.filter.brightness=function(d){null==d&&(d=1);return a.format('<feComponentTransfer><feFuncR type=\"linear\" slope=\"{amount}\"/><feFuncG type=\"linear\" slope=\"{amount}\"/><feFuncB type=\"linear\" slope=\"{amount}\"/></feComponentTransfer>',{amount:d})};a.filter.brightness.toString=function(){return this()};a.filter.contrast=function(d){null==d&&(d=1);return a.format('<feComponentTransfer><feFuncR type=\"linear\" slope=\"{amount}\" intercept=\"{amount2}\"/><feFuncG type=\"linear\" slope=\"{amount}\" intercept=\"{amount2}\"/><feFuncB type=\"linear\" slope=\"{amount}\" intercept=\"{amount2}\"/></feComponentTransfer>',\n",
       "{amount:d,amount2:0.5-d/2})};a.filter.contrast.toString=function(){return this()}});return C});\n",
       "\n",
       "]]> </script>\n",
       "<script> <![CDATA[\n",
       "\n",
       "(function (glob, factory) {\n",
       "    // AMD support\n",
       "    if (typeof define === \"function\" && define.amd) {\n",
       "        // Define as an anonymous module\n",
       "        define(\"Gadfly\", [\"Snap.svg\"], function (Snap) {\n",
       "            return factory(Snap);\n",
       "        });\n",
       "    } else {\n",
       "        // Browser globals (glob is window)\n",
       "        // Snap adds itself to window\n",
       "        glob.Gadfly = factory(glob.Snap);\n",
       "    }\n",
       "}(this, function (Snap) {\n",
       "\n",
       "var Gadfly = {};\n",
       "\n",
       "// Get an x/y coordinate value in pixels\n",
       "var xPX = function(fig, x) {\n",
       "    var client_box = fig.node.getBoundingClientRect();\n",
       "    return x * fig.node.viewBox.baseVal.width / client_box.width;\n",
       "};\n",
       "\n",
       "var yPX = function(fig, y) {\n",
       "    var client_box = fig.node.getBoundingClientRect();\n",
       "    return y * fig.node.viewBox.baseVal.height / client_box.height;\n",
       "};\n",
       "\n",
       "\n",
       "Snap.plugin(function (Snap, Element, Paper, global) {\n",
       "    // Traverse upwards from a snap element to find and return the first\n",
       "    // note with the \"plotroot\" class.\n",
       "    Element.prototype.plotroot = function () {\n",
       "        var element = this;\n",
       "        while (!element.hasClass(\"plotroot\") && element.parent() != null) {\n",
       "            element = element.parent();\n",
       "        }\n",
       "        return element;\n",
       "    };\n",
       "\n",
       "    Element.prototype.svgroot = function () {\n",
       "        var element = this;\n",
       "        while (element.node.nodeName != \"svg\" && element.parent() != null) {\n",
       "            element = element.parent();\n",
       "        }\n",
       "        return element;\n",
       "    };\n",
       "\n",
       "    Element.prototype.plotbounds = function () {\n",
       "        var root = this.plotroot()\n",
       "        var bbox = root.select(\".guide.background\").node.getBBox();\n",
       "        return {\n",
       "            x0: bbox.x,\n",
       "            x1: bbox.x + bbox.width,\n",
       "            y0: bbox.y,\n",
       "            y1: bbox.y + bbox.height\n",
       "        };\n",
       "    };\n",
       "\n",
       "    Element.prototype.plotcenter = function () {\n",
       "        var root = this.plotroot()\n",
       "        var bbox = root.select(\".guide.background\").node.getBBox();\n",
       "        return {\n",
       "            x: bbox.x + bbox.width / 2,\n",
       "            y: bbox.y + bbox.height / 2\n",
       "        };\n",
       "    };\n",
       "\n",
       "    // Emulate IE style mouseenter/mouseleave events, since Microsoft always\n",
       "    // does everything right.\n",
       "    // See: http://www.dynamic-tools.net/toolbox/isMouseLeaveOrEnter/\n",
       "    var events = [\"mouseenter\", \"mouseleave\"];\n",
       "\n",
       "    for (i in events) {\n",
       "        (function (event_name) {\n",
       "            var event_name = events[i];\n",
       "            Element.prototype[event_name] = function (fn, scope) {\n",
       "                if (Snap.is(fn, \"function\")) {\n",
       "                    var fn2 = function (event) {\n",
       "                        if (event.type != \"mouseover\" && event.type != \"mouseout\") {\n",
       "                            return;\n",
       "                        }\n",
       "\n",
       "                        var reltg = event.relatedTarget ? event.relatedTarget :\n",
       "                            event.type == \"mouseout\" ? event.toElement : event.fromElement;\n",
       "                        while (reltg && reltg != this.node) reltg = reltg.parentNode;\n",
       "\n",
       "                        if (reltg != this.node) {\n",
       "                            return fn.apply(this, event);\n",
       "                        }\n",
       "                    };\n",
       "\n",
       "                    if (event_name == \"mouseenter\") {\n",
       "                        this.mouseover(fn2, scope);\n",
       "                    } else {\n",
       "                        this.mouseout(fn2, scope);\n",
       "                    }\n",
       "                }\n",
       "                return this;\n",
       "            };\n",
       "        })(events[i]);\n",
       "    }\n",
       "\n",
       "\n",
       "    Element.prototype.mousewheel = function (fn, scope) {\n",
       "        if (Snap.is(fn, \"function\")) {\n",
       "            var el = this;\n",
       "            var fn2 = function (event) {\n",
       "                fn.apply(el, [event]);\n",
       "            };\n",
       "        }\n",
       "\n",
       "        this.node.addEventListener(\n",
       "            /Firefox/i.test(navigator.userAgent) ? \"DOMMouseScroll\" : \"mousewheel\",\n",
       "            fn2);\n",
       "\n",
       "        return this;\n",
       "    };\n",
       "\n",
       "\n",
       "    // Snap's attr function can be too slow for things like panning/zooming.\n",
       "    // This is a function to directly update element attributes without going\n",
       "    // through eve.\n",
       "    Element.prototype.attribute = function(key, val) {\n",
       "        if (val === undefined) {\n",
       "            return this.node.getAttribute(key);\n",
       "        } else {\n",
       "            this.node.setAttribute(key, val);\n",
       "            return this;\n",
       "        }\n",
       "    };\n",
       "\n",
       "    Element.prototype.init_gadfly = function() {\n",
       "        this.mouseenter(Gadfly.plot_mouseover)\n",
       "            .mouseleave(Gadfly.plot_mouseout)\n",
       "            .dblclick(Gadfly.plot_dblclick)\n",
       "            .mousewheel(Gadfly.guide_background_scroll)\n",
       "            .drag(Gadfly.guide_background_drag_onmove,\n",
       "                  Gadfly.guide_background_drag_onstart,\n",
       "                  Gadfly.guide_background_drag_onend);\n",
       "        this.mouseenter(function (event) {\n",
       "            init_pan_zoom(this.plotroot());\n",
       "        });\n",
       "        return this;\n",
       "    };\n",
       "});\n",
       "\n",
       "\n",
       "// When the plot is moused over, emphasize the grid lines.\n",
       "Gadfly.plot_mouseover = function(event) {\n",
       "    var root = this.plotroot();\n",
       "\n",
       "    var keyboard_zoom = function(event) {\n",
       "        if (event.which == 187) { // plus\n",
       "            increase_zoom_by_position(root, 0.1, true);\n",
       "        } else if (event.which == 189) { // minus\n",
       "            increase_zoom_by_position(root, -0.1, true);\n",
       "        }\n",
       "    };\n",
       "    root.data(\"keyboard_zoom\", keyboard_zoom);\n",
       "    window.addEventListener(\"keyup\", keyboard_zoom);\n",
       "\n",
       "    var xgridlines = root.select(\".xgridlines\"),\n",
       "        ygridlines = root.select(\".ygridlines\");\n",
       "\n",
       "    xgridlines.data(\"unfocused_strokedash\",\n",
       "                    xgridlines.attribute(\"stroke-dasharray\").replace(/(\\d)(,|$)/g, \"$1mm$2\"));\n",
       "    ygridlines.data(\"unfocused_strokedash\",\n",
       "                    ygridlines.attribute(\"stroke-dasharray\").replace(/(\\d)(,|$)/g, \"$1mm$2\"));\n",
       "\n",
       "    // emphasize grid lines\n",
       "    var destcolor = root.data(\"focused_xgrid_color\");\n",
       "    xgridlines.attribute(\"stroke-dasharray\", \"none\")\n",
       "              .selectAll(\"path\")\n",
       "              .animate({stroke: destcolor}, 250);\n",
       "\n",
       "    destcolor = root.data(\"focused_ygrid_color\");\n",
       "    ygridlines.attribute(\"stroke-dasharray\", \"none\")\n",
       "              .selectAll(\"path\")\n",
       "              .animate({stroke: destcolor}, 250);\n",
       "\n",
       "    // reveal zoom slider\n",
       "    root.select(\".zoomslider\")\n",
       "        .animate({opacity: 1.0}, 250);\n",
       "};\n",
       "\n",
       "// Reset pan and zoom on double click\n",
       "Gadfly.plot_dblclick = function(event) {\n",
       "  set_plot_pan_zoom(this.plotroot(), 0.0, 0.0, 1.0);\n",
       "};\n",
       "\n",
       "// Unemphasize grid lines on mouse out.\n",
       "Gadfly.plot_mouseout = function(event) {\n",
       "    var root = this.plotroot();\n",
       "\n",
       "    window.removeEventListener(\"keyup\", root.data(\"keyboard_zoom\"));\n",
       "    root.data(\"keyboard_zoom\", undefined);\n",
       "\n",
       "    var xgridlines = root.select(\".xgridlines\"),\n",
       "        ygridlines = root.select(\".ygridlines\");\n",
       "\n",
       "    var destcolor = root.data(\"unfocused_xgrid_color\");\n",
       "\n",
       "    xgridlines.attribute(\"stroke-dasharray\", xgridlines.data(\"unfocused_strokedash\"))\n",
       "              .selectAll(\"path\")\n",
       "              .animate({stroke: destcolor}, 250);\n",
       "\n",
       "    destcolor = root.data(\"unfocused_ygrid_color\");\n",
       "    ygridlines.attribute(\"stroke-dasharray\", ygridlines.data(\"unfocused_strokedash\"))\n",
       "              .selectAll(\"path\")\n",
       "              .animate({stroke: destcolor}, 250);\n",
       "\n",
       "    // hide zoom slider\n",
       "    root.select(\".zoomslider\")\n",
       "        .animate({opacity: 0.0}, 250);\n",
       "};\n",
       "\n",
       "\n",
       "var set_geometry_transform = function(root, tx, ty, scale) {\n",
       "    var xscalable = root.hasClass(\"xscalable\"),\n",
       "        yscalable = root.hasClass(\"yscalable\");\n",
       "\n",
       "    var old_scale = root.data(\"scale\");\n",
       "\n",
       "    var xscale = xscalable ? scale : 1.0,\n",
       "        yscale = yscalable ? scale : 1.0;\n",
       "\n",
       "    tx = xscalable ? tx : 0.0;\n",
       "    ty = yscalable ? ty : 0.0;\n",
       "\n",
       "    var t = new Snap.Matrix().translate(tx, ty).scale(xscale, yscale);\n",
       "\n",
       "    root.selectAll(\".geometry, image\")\n",
       "        .forEach(function (element, i) {\n",
       "            element.transform(t);\n",
       "        });\n",
       "\n",
       "    bounds = root.plotbounds();\n",
       "\n",
       "    if (yscalable) {\n",
       "        var xfixed_t = new Snap.Matrix().translate(0, ty).scale(1.0, yscale);\n",
       "        root.selectAll(\".xfixed\")\n",
       "            .forEach(function (element, i) {\n",
       "                element.transform(xfixed_t);\n",
       "            });\n",
       "\n",
       "        root.select(\".ylabels\")\n",
       "            .transform(xfixed_t)\n",
       "            .selectAll(\"text\")\n",
       "            .forEach(function (element, i) {\n",
       "                if (element.attribute(\"gadfly:inscale\") == \"true\") {\n",
       "                    var cx = element.asPX(\"x\"),\n",
       "                        cy = element.asPX(\"y\");\n",
       "                    var st = element.data(\"static_transform\");\n",
       "                    unscale_t = new Snap.Matrix();\n",
       "                    unscale_t.scale(1, 1/scale, cx, cy).add(st);\n",
       "                    element.transform(unscale_t);\n",
       "\n",
       "                    var y = cy * scale + ty;\n",
       "                    element.attr(\"visibility\",\n",
       "                        bounds.y0 <= y && y <= bounds.y1 ? \"visible\" : \"hidden\");\n",
       "                }\n",
       "            });\n",
       "    }\n",
       "\n",
       "    if (xscalable) {\n",
       "        var yfixed_t = new Snap.Matrix().translate(tx, 0).scale(xscale, 1.0);\n",
       "        var xtrans = new Snap.Matrix().translate(tx, 0);\n",
       "        root.selectAll(\".yfixed\")\n",
       "            .forEach(function (element, i) {\n",
       "                element.transform(yfixed_t);\n",
       "            });\n",
       "\n",
       "        root.select(\".xlabels\")\n",
       "            .transform(yfixed_t)\n",
       "            .selectAll(\"text\")\n",
       "            .forEach(function (element, i) {\n",
       "                if (element.attribute(\"gadfly:inscale\") == \"true\") {\n",
       "                    var cx = element.asPX(\"x\"),\n",
       "                        cy = element.asPX(\"y\");\n",
       "                    var st = element.data(\"static_transform\");\n",
       "                    unscale_t = new Snap.Matrix();\n",
       "                    unscale_t.scale(1/scale, 1, cx, cy).add(st);\n",
       "\n",
       "                    element.transform(unscale_t);\n",
       "\n",
       "                    var x = cx * scale + tx;\n",
       "                    element.attr(\"visibility\",\n",
       "                        bounds.x0 <= x && x <= bounds.x1 ? \"visible\" : \"hidden\");\n",
       "                    }\n",
       "            });\n",
       "    }\n",
       "\n",
       "    // we must unscale anything that is scale invariance: widths, raiduses, etc.\n",
       "    var size_attribs = [\"font-size\"];\n",
       "    var unscaled_selection = \".geometry, .geometry *\";\n",
       "    if (xscalable) {\n",
       "        size_attribs.push(\"rx\");\n",
       "        unscaled_selection += \", .xgridlines\";\n",
       "    }\n",
       "    if (yscalable) {\n",
       "        size_attribs.push(\"ry\");\n",
       "        unscaled_selection += \", .ygridlines\";\n",
       "    }\n",
       "\n",
       "    root.selectAll(unscaled_selection)\n",
       "        .forEach(function (element, i) {\n",
       "            // circle need special help\n",
       "            if (element.node.nodeName == \"circle\") {\n",
       "                var cx = element.attribute(\"cx\"),\n",
       "                    cy = element.attribute(\"cy\");\n",
       "                unscale_t = new Snap.Matrix().scale(1/xscale, 1/yscale,\n",
       "                                                        cx, cy);\n",
       "                element.transform(unscale_t);\n",
       "                return;\n",
       "            }\n",
       "\n",
       "            for (i in size_attribs) {\n",
       "                var key = size_attribs[i];\n",
       "                var val = parseFloat(element.attribute(key));\n",
       "                if (val !== undefined && val != 0 && !isNaN(val)) {\n",
       "                    element.attribute(key, val * old_scale / scale);\n",
       "                }\n",
       "            }\n",
       "        });\n",
       "};\n",
       "\n",
       "\n",
       "// Find the most appropriate tick scale and update label visibility.\n",
       "var update_tickscale = function(root, scale, axis) {\n",
       "    if (!root.hasClass(axis + \"scalable\")) return;\n",
       "\n",
       "    var tickscales = root.data(axis + \"tickscales\");\n",
       "    var best_tickscale = 1.0;\n",
       "    var best_tickscale_dist = Infinity;\n",
       "    for (tickscale in tickscales) {\n",
       "        var dist = Math.abs(Math.log(tickscale) - Math.log(scale));\n",
       "        if (dist < best_tickscale_dist) {\n",
       "            best_tickscale_dist = dist;\n",
       "            best_tickscale = tickscale;\n",
       "        }\n",
       "    }\n",
       "\n",
       "    if (best_tickscale != root.data(axis + \"tickscale\")) {\n",
       "        root.data(axis + \"tickscale\", best_tickscale);\n",
       "        var mark_inscale_gridlines = function (element, i) {\n",
       "            var inscale = element.attr(\"gadfly:scale\") == best_tickscale;\n",
       "            element.attribute(\"gadfly:inscale\", inscale);\n",
       "            element.attr(\"visibility\", inscale ? \"visible\" : \"hidden\");\n",
       "        };\n",
       "\n",
       "        var mark_inscale_labels = function (element, i) {\n",
       "            var inscale = element.attr(\"gadfly:scale\") == best_tickscale;\n",
       "            element.attribute(\"gadfly:inscale\", inscale);\n",
       "            element.attr(\"visibility\", inscale ? \"visible\" : \"hidden\");\n",
       "        };\n",
       "\n",
       "        root.select(\".\" + axis + \"gridlines\").selectAll(\"path\").forEach(mark_inscale_gridlines);\n",
       "        root.select(\".\" + axis + \"labels\").selectAll(\"text\").forEach(mark_inscale_labels);\n",
       "    }\n",
       "};\n",
       "\n",
       "\n",
       "var set_plot_pan_zoom = function(root, tx, ty, scale) {\n",
       "    var old_scale = root.data(\"scale\");\n",
       "    var bounds = root.plotbounds();\n",
       "\n",
       "    var width = bounds.x1 - bounds.x0,\n",
       "        height = bounds.y1 - bounds.y0;\n",
       "\n",
       "    // compute the viewport derived from tx, ty, and scale\n",
       "    var x_min = -width * scale - (scale * width - width),\n",
       "        x_max = width * scale,\n",
       "        y_min = -height * scale - (scale * height - height),\n",
       "        y_max = height * scale;\n",
       "\n",
       "    var x0 = bounds.x0 - scale * bounds.x0,\n",
       "        y0 = bounds.y0 - scale * bounds.y0;\n",
       "\n",
       "    var tx = Math.max(Math.min(tx - x0, x_max), x_min),\n",
       "        ty = Math.max(Math.min(ty - y0, y_max), y_min);\n",
       "\n",
       "    tx += x0;\n",
       "    ty += y0;\n",
       "\n",
       "    // when the scale change, we may need to alter which set of\n",
       "    // ticks is being displayed\n",
       "    if (scale != old_scale) {\n",
       "        update_tickscale(root, scale, \"x\");\n",
       "        update_tickscale(root, scale, \"y\");\n",
       "    }\n",
       "\n",
       "    set_geometry_transform(root, tx, ty, scale);\n",
       "\n",
       "    root.data(\"scale\", scale);\n",
       "    root.data(\"tx\", tx);\n",
       "    root.data(\"ty\", ty);\n",
       "};\n",
       "\n",
       "\n",
       "var scale_centered_translation = function(root, scale) {\n",
       "    var bounds = root.plotbounds();\n",
       "\n",
       "    var width = bounds.x1 - bounds.x0,\n",
       "        height = bounds.y1 - bounds.y0;\n",
       "\n",
       "    var tx0 = root.data(\"tx\"),\n",
       "        ty0 = root.data(\"ty\");\n",
       "\n",
       "    var scale0 = root.data(\"scale\");\n",
       "\n",
       "    // how off from center the current view is\n",
       "    var xoff = tx0 - (bounds.x0 * (1 - scale0) + (width * (1 - scale0)) / 2),\n",
       "        yoff = ty0 - (bounds.y0 * (1 - scale0) + (height * (1 - scale0)) / 2);\n",
       "\n",
       "    // rescale offsets\n",
       "    xoff = xoff * scale / scale0;\n",
       "    yoff = yoff * scale / scale0;\n",
       "\n",
       "    // adjust for the panel position being scaled\n",
       "    var x_edge_adjust = bounds.x0 * (1 - scale),\n",
       "        y_edge_adjust = bounds.y0 * (1 - scale);\n",
       "\n",
       "    return {\n",
       "        x: xoff + x_edge_adjust + (width - width * scale) / 2,\n",
       "        y: yoff + y_edge_adjust + (height - height * scale) / 2\n",
       "    };\n",
       "};\n",
       "\n",
       "\n",
       "// Initialize data for panning zooming if it isn't already.\n",
       "var init_pan_zoom = function(root) {\n",
       "    if (root.data(\"zoompan-ready\")) {\n",
       "        return;\n",
       "    }\n",
       "\n",
       "    // The non-scaling-stroke trick. Rather than try to correct for the\n",
       "    // stroke-width when zooming, we force it to a fixed value.\n",
       "    var px_per_mm = root.node.getCTM().a;\n",
       "\n",
       "    // Drag events report deltas in pixels, which we'd like to convert to\n",
       "    // millimeters.\n",
       "    root.data(\"px_per_mm\", px_per_mm);\n",
       "\n",
       "    root.selectAll(\"path\")\n",
       "        .forEach(function (element, i) {\n",
       "        sw = element.asPX(\"stroke-width\") * px_per_mm;\n",
       "        if (sw > 0) {\n",
       "            element.attribute(\"stroke-width\", sw);\n",
       "            element.attribute(\"vector-effect\", \"non-scaling-stroke\");\n",
       "        }\n",
       "    });\n",
       "\n",
       "    // Store ticks labels original tranformation\n",
       "    root.selectAll(\".xlabels > text, .ylabels > text\")\n",
       "        .forEach(function (element, i) {\n",
       "            var lm = element.transform().localMatrix;\n",
       "            element.data(\"static_transform\",\n",
       "                new Snap.Matrix(lm.a, lm.b, lm.c, lm.d, lm.e, lm.f));\n",
       "        });\n",
       "\n",
       "    var xgridlines = root.select(\".xgridlines\");\n",
       "    var ygridlines = root.select(\".ygridlines\");\n",
       "    var xlabels = root.select(\".xlabels\");\n",
       "    var ylabels = root.select(\".ylabels\");\n",
       "\n",
       "    if (root.data(\"tx\") === undefined) root.data(\"tx\", 0);\n",
       "    if (root.data(\"ty\") === undefined) root.data(\"ty\", 0);\n",
       "    if (root.data(\"scale\") === undefined) root.data(\"scale\", 1.0);\n",
       "    if (root.data(\"xtickscales\") === undefined) {\n",
       "\n",
       "        // index all the tick scales that are listed\n",
       "        var xtickscales = {};\n",
       "        var ytickscales = {};\n",
       "        var add_x_tick_scales = function (element, i) {\n",
       "            xtickscales[element.attribute(\"gadfly:scale\")] = true;\n",
       "        };\n",
       "        var add_y_tick_scales = function (element, i) {\n",
       "            ytickscales[element.attribute(\"gadfly:scale\")] = true;\n",
       "        };\n",
       "\n",
       "        if (xgridlines) xgridlines.selectAll(\"path\").forEach(add_x_tick_scales);\n",
       "        if (ygridlines) ygridlines.selectAll(\"path\").forEach(add_y_tick_scales);\n",
       "        if (xlabels) xlabels.selectAll(\"text\").forEach(add_x_tick_scales);\n",
       "        if (ylabels) ylabels.selectAll(\"text\").forEach(add_y_tick_scales);\n",
       "\n",
       "        root.data(\"xtickscales\", xtickscales);\n",
       "        root.data(\"ytickscales\", ytickscales);\n",
       "        root.data(\"xtickscale\", 1.0);\n",
       "    }\n",
       "\n",
       "    var min_scale = 1.0, max_scale = 1.0;\n",
       "    for (scale in xtickscales) {\n",
       "        min_scale = Math.min(min_scale, scale);\n",
       "        max_scale = Math.max(max_scale, scale);\n",
       "    }\n",
       "    for (scale in ytickscales) {\n",
       "        min_scale = Math.min(min_scale, scale);\n",
       "        max_scale = Math.max(max_scale, scale);\n",
       "    }\n",
       "    root.data(\"min_scale\", min_scale);\n",
       "    root.data(\"max_scale\", max_scale);\n",
       "\n",
       "    // store the original positions of labels\n",
       "    if (xlabels) {\n",
       "        xlabels.selectAll(\"text\")\n",
       "               .forEach(function (element, i) {\n",
       "                   element.data(\"x\", element.asPX(\"x\"));\n",
       "               });\n",
       "    }\n",
       "\n",
       "    if (ylabels) {\n",
       "        ylabels.selectAll(\"text\")\n",
       "               .forEach(function (element, i) {\n",
       "                   element.data(\"y\", element.asPX(\"y\"));\n",
       "               });\n",
       "    }\n",
       "\n",
       "    // mark grid lines and ticks as in or out of scale.\n",
       "    var mark_inscale = function (element, i) {\n",
       "        element.attribute(\"gadfly:inscale\", element.attribute(\"gadfly:scale\") == 1.0);\n",
       "    };\n",
       "\n",
       "    if (xgridlines) xgridlines.selectAll(\"path\").forEach(mark_inscale);\n",
       "    if (ygridlines) ygridlines.selectAll(\"path\").forEach(mark_inscale);\n",
       "    if (xlabels) xlabels.selectAll(\"text\").forEach(mark_inscale);\n",
       "    if (ylabels) ylabels.selectAll(\"text\").forEach(mark_inscale);\n",
       "\n",
       "    // figure out the upper ond lower bounds on panning using the maximum\n",
       "    // and minum grid lines\n",
       "    var bounds = root.plotbounds();\n",
       "    var pan_bounds = {\n",
       "        x0: 0.0,\n",
       "        y0: 0.0,\n",
       "        x1: 0.0,\n",
       "        y1: 0.0\n",
       "    };\n",
       "\n",
       "    if (xgridlines) {\n",
       "        xgridlines\n",
       "            .selectAll(\"path\")\n",
       "            .forEach(function (element, i) {\n",
       "                if (element.attribute(\"gadfly:inscale\") == \"true\") {\n",
       "                    var bbox = element.node.getBBox();\n",
       "                    if (bounds.x1 - bbox.x < pan_bounds.x0) {\n",
       "                        pan_bounds.x0 = bounds.x1 - bbox.x;\n",
       "                    }\n",
       "                    if (bounds.x0 - bbox.x > pan_bounds.x1) {\n",
       "                        pan_bounds.x1 = bounds.x0 - bbox.x;\n",
       "                    }\n",
       "                    element.attr(\"visibility\", \"visible\");\n",
       "                }\n",
       "            });\n",
       "    }\n",
       "\n",
       "    if (ygridlines) {\n",
       "        ygridlines\n",
       "            .selectAll(\"path\")\n",
       "            .forEach(function (element, i) {\n",
       "                if (element.attribute(\"gadfly:inscale\") == \"true\") {\n",
       "                    var bbox = element.node.getBBox();\n",
       "                    if (bounds.y1 - bbox.y < pan_bounds.y0) {\n",
       "                        pan_bounds.y0 = bounds.y1 - bbox.y;\n",
       "                    }\n",
       "                    if (bounds.y0 - bbox.y > pan_bounds.y1) {\n",
       "                        pan_bounds.y1 = bounds.y0 - bbox.y;\n",
       "                    }\n",
       "                    element.attr(\"visibility\", \"visible\");\n",
       "                }\n",
       "            });\n",
       "    }\n",
       "\n",
       "    // nudge these values a little\n",
       "    pan_bounds.x0 -= 5;\n",
       "    pan_bounds.x1 += 5;\n",
       "    pan_bounds.y0 -= 5;\n",
       "    pan_bounds.y1 += 5;\n",
       "    root.data(\"pan_bounds\", pan_bounds);\n",
       "\n",
       "    root.data(\"zoompan-ready\", true)\n",
       "};\n",
       "\n",
       "\n",
       "// drag actions, i.e. zooming and panning\n",
       "var pan_action = {\n",
       "    start: function(root, x, y, event) {\n",
       "        root.data(\"dx\", 0);\n",
       "        root.data(\"dy\", 0);\n",
       "        root.data(\"tx0\", root.data(\"tx\"));\n",
       "        root.data(\"ty0\", root.data(\"ty\"));\n",
       "    },\n",
       "    update: function(root, dx, dy, x, y, event) {\n",
       "        var px_per_mm = root.data(\"px_per_mm\");\n",
       "        dx /= px_per_mm;\n",
       "        dy /= px_per_mm;\n",
       "\n",
       "        var tx0 = root.data(\"tx\"),\n",
       "            ty0 = root.data(\"ty\");\n",
       "\n",
       "        var dx0 = root.data(\"dx\"),\n",
       "            dy0 = root.data(\"dy\");\n",
       "\n",
       "        root.data(\"dx\", dx);\n",
       "        root.data(\"dy\", dy);\n",
       "\n",
       "        dx = dx - dx0;\n",
       "        dy = dy - dy0;\n",
       "\n",
       "        var tx = tx0 + dx,\n",
       "            ty = ty0 + dy;\n",
       "\n",
       "        set_plot_pan_zoom(root, tx, ty, root.data(\"scale\"));\n",
       "    },\n",
       "    end: function(root, event) {\n",
       "\n",
       "    },\n",
       "    cancel: function(root) {\n",
       "        set_plot_pan_zoom(root, root.data(\"tx0\"), root.data(\"ty0\"), root.data(\"scale\"));\n",
       "    }\n",
       "};\n",
       "\n",
       "var zoom_box;\n",
       "var zoom_action = {\n",
       "    start: function(root, x, y, event) {\n",
       "        var bounds = root.plotbounds();\n",
       "        var width = bounds.x1 - bounds.x0,\n",
       "            height = bounds.y1 - bounds.y0;\n",
       "        var ratio = width / height;\n",
       "        var xscalable = root.hasClass(\"xscalable\"),\n",
       "            yscalable = root.hasClass(\"yscalable\");\n",
       "        var px_per_mm = root.data(\"px_per_mm\");\n",
       "        x = xscalable ? x / px_per_mm : bounds.x0;\n",
       "        y = yscalable ? y / px_per_mm : bounds.y0;\n",
       "        var w = xscalable ? 0 : width;\n",
       "        var h = yscalable ? 0 : height;\n",
       "        zoom_box = root.rect(x, y, w, h).attr({\n",
       "            \"fill\": \"#000\",\n",
       "            \"opacity\": 0.25\n",
       "        });\n",
       "        zoom_box.data(\"ratio\", ratio);\n",
       "    },\n",
       "    update: function(root, dx, dy, x, y, event) {\n",
       "        var xscalable = root.hasClass(\"xscalable\"),\n",
       "            yscalable = root.hasClass(\"yscalable\");\n",
       "        var px_per_mm = root.data(\"px_per_mm\");\n",
       "        var bounds = root.plotbounds();\n",
       "        if (yscalable) {\n",
       "            y /= px_per_mm;\n",
       "            y = Math.max(bounds.y0, y);\n",
       "            y = Math.min(bounds.y1, y);\n",
       "        } else {\n",
       "            y = bounds.y1;\n",
       "        }\n",
       "        if (xscalable) {\n",
       "            x /= px_per_mm;\n",
       "            x = Math.max(bounds.x0, x);\n",
       "            x = Math.min(bounds.x1, x);\n",
       "        } else {\n",
       "            x = bounds.x1;\n",
       "        }\n",
       "\n",
       "        dx = x - zoom_box.attr(\"x\");\n",
       "        dy = y - zoom_box.attr(\"y\");\n",
       "        if (xscalable && yscalable) {\n",
       "            var ratio = zoom_box.data(\"ratio\");\n",
       "            var width = Math.min(Math.abs(dx), ratio * Math.abs(dy));\n",
       "            var height = Math.min(Math.abs(dy), Math.abs(dx) / ratio);\n",
       "            dx = width * dx / Math.abs(dx);\n",
       "            dy = height * dy / Math.abs(dy);\n",
       "        }\n",
       "        var xoffset = 0,\n",
       "            yoffset = 0;\n",
       "        if (dx < 0) {\n",
       "            xoffset = dx;\n",
       "            dx = -1 * dx;\n",
       "        }\n",
       "        if (dy < 0) {\n",
       "            yoffset = dy;\n",
       "            dy = -1 * dy;\n",
       "        }\n",
       "        if (isNaN(dy)) {\n",
       "            dy = 0.0;\n",
       "        }\n",
       "        if (isNaN(dx)) {\n",
       "            dx = 0.0;\n",
       "        }\n",
       "        zoom_box.transform(\"T\" + xoffset + \",\" + yoffset);\n",
       "        zoom_box.attr(\"width\", dx);\n",
       "        zoom_box.attr(\"height\", dy);\n",
       "    },\n",
       "    end: function(root, event) {\n",
       "        var xscalable = root.hasClass(\"xscalable\"),\n",
       "            yscalable = root.hasClass(\"yscalable\");\n",
       "        var zoom_bounds = zoom_box.getBBox();\n",
       "        if (zoom_bounds.width * zoom_bounds.height <= 0) {\n",
       "            return;\n",
       "        }\n",
       "        var plot_bounds = root.plotbounds();\n",
       "        var zoom_factor = 1.0;\n",
       "        if (yscalable) {\n",
       "            zoom_factor = (plot_bounds.y1 - plot_bounds.y0) / zoom_bounds.height;\n",
       "        } else {\n",
       "            zoom_factor = (plot_bounds.x1 - plot_bounds.x0) / zoom_bounds.width;\n",
       "        }\n",
       "        var tx = (root.data(\"tx\") - zoom_bounds.x) * zoom_factor + plot_bounds.x0,\n",
       "            ty = (root.data(\"ty\") - zoom_bounds.y) * zoom_factor + plot_bounds.y0;\n",
       "        set_plot_pan_zoom(root, tx, ty, root.data(\"scale\") * zoom_factor);\n",
       "        zoom_box.remove();\n",
       "    },\n",
       "    cancel: function(root) {\n",
       "        zoom_box.remove();\n",
       "    }\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.guide_background_drag_onstart = function(x, y, event) {\n",
       "    var root = this.plotroot();\n",
       "    var scalable = root.hasClass(\"xscalable\") || root.hasClass(\"yscalable\");\n",
       "    var zoomable = !event.altKey && !event.ctrlKey && event.shiftKey && scalable;\n",
       "    var panable = !event.altKey && !event.ctrlKey && !event.shiftKey && scalable;\n",
       "    var drag_action = zoomable ? zoom_action :\n",
       "                      panable  ? pan_action :\n",
       "                                 undefined;\n",
       "    root.data(\"drag_action\", drag_action);\n",
       "    if (drag_action) {\n",
       "        var cancel_drag_action = function(event) {\n",
       "            if (event.which == 27) { // esc key\n",
       "                drag_action.cancel(root);\n",
       "                root.data(\"drag_action\", undefined);\n",
       "            }\n",
       "        };\n",
       "        window.addEventListener(\"keyup\", cancel_drag_action);\n",
       "        root.data(\"cancel_drag_action\", cancel_drag_action);\n",
       "        drag_action.start(root, x, y, event);\n",
       "    }\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.guide_background_drag_onmove = function(dx, dy, x, y, event) {\n",
       "    var root = this.plotroot();\n",
       "    var drag_action = root.data(\"drag_action\");\n",
       "    if (drag_action) {\n",
       "        drag_action.update(root, dx, dy, x, y, event);\n",
       "    }\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.guide_background_drag_onend = function(event) {\n",
       "    var root = this.plotroot();\n",
       "    window.removeEventListener(\"keyup\", root.data(\"cancel_drag_action\"));\n",
       "    root.data(\"cancel_drag_action\", undefined);\n",
       "    var drag_action = root.data(\"drag_action\");\n",
       "    if (drag_action) {\n",
       "        drag_action.end(root, event);\n",
       "    }\n",
       "    root.data(\"drag_action\", undefined);\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.guide_background_scroll = function(event) {\n",
       "    if (event.shiftKey) {\n",
       "        increase_zoom_by_position(this.plotroot(), 0.001 * event.wheelDelta);\n",
       "        event.preventDefault();\n",
       "    }\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.zoomslider_button_mouseover = function(event) {\n",
       "    this.select(\".button_logo\")\n",
       "         .animate({fill: this.data(\"mouseover_color\")}, 100);\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.zoomslider_button_mouseout = function(event) {\n",
       "     this.select(\".button_logo\")\n",
       "         .animate({fill: this.data(\"mouseout_color\")}, 100);\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.zoomslider_zoomout_click = function(event) {\n",
       "    increase_zoom_by_position(this.plotroot(), -0.1, true);\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.zoomslider_zoomin_click = function(event) {\n",
       "    increase_zoom_by_position(this.plotroot(), 0.1, true);\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.zoomslider_track_click = function(event) {\n",
       "    // TODO\n",
       "};\n",
       "\n",
       "\n",
       "// Map slider position x to scale y using the function y = a*exp(b*x)+c.\n",
       "// The constants a, b, and c are solved using the constraint that the function\n",
       "// should go through the points (0; min_scale), (0.5; 1), and (1; max_scale).\n",
       "var scale_from_slider_position = function(position, min_scale, max_scale) {\n",
       "    var a = (1 - 2 * min_scale + min_scale * min_scale) / (min_scale + max_scale - 2),\n",
       "        b = 2 * Math.log((max_scale - 1) / (1 - min_scale)),\n",
       "        c = (min_scale * max_scale - 1) / (min_scale + max_scale - 2);\n",
       "    return a * Math.exp(b * position) + c;\n",
       "}\n",
       "\n",
       "// inverse of scale_from_slider_position\n",
       "var slider_position_from_scale = function(scale, min_scale, max_scale) {\n",
       "    var a = (1 - 2 * min_scale + min_scale * min_scale) / (min_scale + max_scale - 2),\n",
       "        b = 2 * Math.log((max_scale - 1) / (1 - min_scale)),\n",
       "        c = (min_scale * max_scale - 1) / (min_scale + max_scale - 2);\n",
       "    return 1 / b * Math.log((scale - c) / a);\n",
       "}\n",
       "\n",
       "var increase_zoom_by_position = function(root, delta_position, animate) {\n",
       "    var scale = root.data(\"scale\"),\n",
       "        min_scale = root.data(\"min_scale\"),\n",
       "        max_scale = root.data(\"max_scale\");\n",
       "    var position = slider_position_from_scale(scale, min_scale, max_scale);\n",
       "    position += delta_position;\n",
       "    scale = scale_from_slider_position(position, min_scale, max_scale);\n",
       "    set_zoom(root, scale, animate);\n",
       "}\n",
       "\n",
       "var set_zoom = function(root, scale, animate) {\n",
       "    var min_scale = root.data(\"min_scale\"),\n",
       "        max_scale = root.data(\"max_scale\"),\n",
       "        old_scale = root.data(\"scale\");\n",
       "    var new_scale = Math.max(min_scale, Math.min(scale, max_scale));\n",
       "    if (animate) {\n",
       "        Snap.animate(\n",
       "            old_scale,\n",
       "            new_scale,\n",
       "            function (new_scale) {\n",
       "                update_plot_scale(root, new_scale);\n",
       "            },\n",
       "            200);\n",
       "    } else {\n",
       "        update_plot_scale(root, new_scale);\n",
       "    }\n",
       "}\n",
       "\n",
       "\n",
       "var update_plot_scale = function(root, new_scale) {\n",
       "    var trans = scale_centered_translation(root, new_scale);\n",
       "    set_plot_pan_zoom(root, trans.x, trans.y, new_scale);\n",
       "\n",
       "    root.selectAll(\".zoomslider_thumb\")\n",
       "        .forEach(function (element, i) {\n",
       "            var min_pos = element.data(\"min_pos\"),\n",
       "                max_pos = element.data(\"max_pos\"),\n",
       "                min_scale = root.data(\"min_scale\"),\n",
       "                max_scale = root.data(\"max_scale\");\n",
       "            var xmid = (min_pos + max_pos) / 2;\n",
       "            var xpos = slider_position_from_scale(new_scale, min_scale, max_scale);\n",
       "            element.transform(new Snap.Matrix().translate(\n",
       "                Math.max(min_pos, Math.min(\n",
       "                         max_pos, min_pos + (max_pos - min_pos) * xpos)) - xmid, 0));\n",
       "    });\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.zoomslider_thumb_dragmove = function(dx, dy, x, y, event) {\n",
       "    var root = this.plotroot();\n",
       "    var min_pos = this.data(\"min_pos\"),\n",
       "        max_pos = this.data(\"max_pos\"),\n",
       "        min_scale = root.data(\"min_scale\"),\n",
       "        max_scale = root.data(\"max_scale\"),\n",
       "        old_scale = root.data(\"old_scale\");\n",
       "\n",
       "    var px_per_mm = root.data(\"px_per_mm\");\n",
       "    dx /= px_per_mm;\n",
       "    dy /= px_per_mm;\n",
       "\n",
       "    var xmid = (min_pos + max_pos) / 2;\n",
       "    var xpos = slider_position_from_scale(old_scale, min_scale, max_scale) +\n",
       "                   dx / (max_pos - min_pos);\n",
       "\n",
       "    // compute the new scale\n",
       "    var new_scale = scale_from_slider_position(xpos, min_scale, max_scale);\n",
       "    new_scale = Math.min(max_scale, Math.max(min_scale, new_scale));\n",
       "\n",
       "    update_plot_scale(root, new_scale);\n",
       "    event.stopPropagation();\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.zoomslider_thumb_dragstart = function(x, y, event) {\n",
       "    this.animate({fill: this.data(\"mouseover_color\")}, 100);\n",
       "    var root = this.plotroot();\n",
       "\n",
       "    // keep track of what the scale was when we started dragging\n",
       "    root.data(\"old_scale\", root.data(\"scale\"));\n",
       "    event.stopPropagation();\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.zoomslider_thumb_dragend = function(event) {\n",
       "    this.animate({fill: this.data(\"mouseout_color\")}, 100);\n",
       "    event.stopPropagation();\n",
       "};\n",
       "\n",
       "\n",
       "var toggle_color_class = function(root, color_class, ison) {\n",
       "    var guides = root.selectAll(\".guide.\" + color_class + \",.guide .\" + color_class);\n",
       "    var geoms = root.selectAll(\".geometry.\" + color_class + \",.geometry .\" + color_class);\n",
       "    if (ison) {\n",
       "        guides.animate({opacity: 0.5}, 250);\n",
       "        geoms.animate({opacity: 0.0}, 250);\n",
       "    } else {\n",
       "        guides.animate({opacity: 1.0}, 250);\n",
       "        geoms.animate({opacity: 1.0}, 250);\n",
       "    }\n",
       "};\n",
       "\n",
       "\n",
       "Gadfly.colorkey_swatch_click = function(event) {\n",
       "    var root = this.plotroot();\n",
       "    var color_class = this.data(\"color_class\");\n",
       "\n",
       "    if (event.shiftKey) {\n",
       "        root.selectAll(\".colorkey text\")\n",
       "            .forEach(function (element) {\n",
       "                var other_color_class = element.data(\"color_class\");\n",
       "                if (other_color_class != color_class) {\n",
       "                    toggle_color_class(root, other_color_class,\n",
       "                                       element.attr(\"opacity\") == 1.0);\n",
       "                }\n",
       "            });\n",
       "    } else {\n",
       "        toggle_color_class(root, color_class, this.attr(\"opacity\") == 1.0);\n",
       "    }\n",
       "};\n",
       "\n",
       "\n",
       "return Gadfly;\n",
       "\n",
       "}));\n",
       "\n",
       "\n",
       "//@ sourceURL=gadfly.js\n",
       "\n",
       "(function (glob, factory) {\n",
       "    // AMD support\n",
       "      if (typeof require === \"function\" && typeof define === \"function\" && define.amd) {\n",
       "        require([\"Snap.svg\", \"Gadfly\"], function (Snap, Gadfly) {\n",
       "            factory(Snap, Gadfly);\n",
       "        });\n",
       "      } else {\n",
       "          factory(glob.Snap, glob.Gadfly);\n",
       "      }\n",
       "})(window, function (Snap, Gadfly) {\n",
       "    var fig = Snap(\"#img-ff04feb6\");\n",
       "fig.select(\"#img-ff04feb6-4\")\n",
       "   .drag(function() {}, function() {}, function() {});\n",
       "fig.select(\"#img-ff04feb6-6\")\n",
       "   .data(\"color_class\", \"color_f1\")\n",
       ".click(Gadfly.colorkey_swatch_click)\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-7\")\n",
       "   .data(\"color_class\", \"color_f2\")\n",
       ".click(Gadfly.colorkey_swatch_click)\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-9\")\n",
       "   .data(\"color_class\", \"color_f1\")\n",
       ".click(Gadfly.colorkey_swatch_click)\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-10\")\n",
       "   .data(\"color_class\", \"color_f2\")\n",
       ".click(Gadfly.colorkey_swatch_click)\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-14\")\n",
       "   .init_gadfly();\n",
       "fig.select(\"#img-ff04feb6-17\")\n",
       "   .plotroot().data(\"unfocused_ygrid_color\", \"#D0D0E0\")\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-17\")\n",
       "   .plotroot().data(\"focused_ygrid_color\", \"#A0A0A0\")\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-154\")\n",
       "   .plotroot().data(\"unfocused_xgrid_color\", \"#D0D0E0\")\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-154\")\n",
       "   .plotroot().data(\"focused_xgrid_color\", \"#A0A0A0\")\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-314\")\n",
       "   .data(\"mouseover_color\", \"#CD5C5C\")\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-314\")\n",
       "   .data(\"mouseout_color\", \"#6A6A6A\")\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-314\")\n",
       "   .click(Gadfly.zoomslider_zoomin_click)\n",
       ".mouseenter(Gadfly.zoomslider_button_mouseover)\n",
       ".mouseleave(Gadfly.zoomslider_button_mouseout)\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-318\")\n",
       "   .data(\"max_pos\", 111.58)\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-318\")\n",
       "   .data(\"min_pos\", 94.58)\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-318\")\n",
       "   .click(Gadfly.zoomslider_track_click);\n",
       "fig.select(\"#img-ff04feb6-320\")\n",
       "   .data(\"max_pos\", 111.58)\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-320\")\n",
       "   .data(\"min_pos\", 94.58)\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-320\")\n",
       "   .data(\"mouseover_color\", \"#CD5C5C\")\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-320\")\n",
       "   .data(\"mouseout_color\", \"#6A6A6A\")\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-320\")\n",
       "   .drag(Gadfly.zoomslider_thumb_dragmove,\n",
       "     Gadfly.zoomslider_thumb_dragstart,\n",
       "     Gadfly.zoomslider_thumb_dragend)\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-322\")\n",
       "   .data(\"mouseover_color\", \"#CD5C5C\")\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-322\")\n",
       "   .data(\"mouseout_color\", \"#6A6A6A\")\n",
       ";\n",
       "fig.select(\"#img-ff04feb6-322\")\n",
       "   .click(Gadfly.zoomslider_zoomout_click)\n",
       ".mouseenter(Gadfly.zoomslider_button_mouseover)\n",
       ".mouseleave(Gadfly.zoomslider_button_mouseout)\n",
       ";\n",
       "    });\n",
       "]]> </script>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "Plot(...)"
      ]
     },
     "execution_count": 250,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "using Gadfly\n",
    "plot([f, f′], -3, 3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 多変数関数の勾配を計算する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 251,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import ReverseDiff  # https://github.com/JuliaDiff/ReverseDiff.jl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 252,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "f′ (generic function with 1 method)"
      ]
     },
     "execution_count": 252,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f(x) = 2dot(x, x) + sum(x)\n",
    "f′(x) = ReverseDiff.gradient(f, x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 253,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Float64,1}:\n",
       " 1.0\n",
       " 1.0\n",
       " 1.0"
      ]
     },
     "execution_count": 253,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f′(zeros(3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 254,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Float64,1}:\n",
       " 5.0\n",
       " 5.0\n",
       " 5.0"
      ]
     },
     "execution_count": 254,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f′(ones(3))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 多変数関数の最小化を行う"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 255,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "using Optim  # https://github.com/JuliaNLSolvers/Optim.jl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 256,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "f (generic function with 1 method)"
      ]
     },
     "execution_count": 256,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 2変数のRosenbrock関数 https://en.wikipedia.org/wiki/Rosenbrock_function\n",
    "f(x) =  (1.0 - x[1])^2 + 100.0 * (x[2] - x[1]^2)^2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 257,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Results of Optimization Algorithm\n",
       " * Algorithm: Nelder-Mead\n",
       " * Starting Point: [0.0,0.0]\n",
       " * Minimizer: [0.9999710322210338,0.9999438685860869]\n",
       " * Minimum: 1.164323e-09\n",
       " * Iterations: 74\n",
       " * Convergence: true\n",
       "   *  √(Σ(yᵢ-ȳ)²)/n < 1.0e-08: true\n",
       "   * Reached Maximum Number of Iterations: false\n",
       " * Objective Function Calls: 108"
      ]
     },
     "execution_count": 257,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "optimize(f, zeros(2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 258,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Results of Optimization Algorithm\n",
       " * Algorithm: BFGS\n",
       " * Starting Point: [0.0,0.0]\n",
       " * Minimizer: [0.9999999926033423,0.9999999852005353]\n",
       " * Minimum: 5.471433e-17\n",
       " * Iterations: 16\n",
       " * Convergence: true\n",
       "   * |x - x'| < 1.0e-32: false\n",
       "   * |f(x) - f(x')| / |f(x)| < 1.0e-32: false\n",
       "   * |g(x)| < 1.0e-08: true\n",
       "   * f(x) > f(x'): false\n",
       "   * Reached Maximum Number of Iterations: false\n",
       " * Objective Function Calls: 69\n",
       " * Gradient Calls: 69"
      ]
     },
     "execution_count": 258,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "optimize(f, zeros(2), BFGS())"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Julia 0.6.0",
   "language": "julia",
   "name": "julia-0.6"
  },
  "language_info": {
   "file_extension": ".jl",
   "mimetype": "application/julia",
   "name": "julia",
   "version": "0.6.0"
  },
  "toc": {
   "colors": {
    "hover_highlight": "#DAA520",
    "navigate_num": "#000000",
    "navigate_text": "#333333",
    "running_highlight": "#FF0000",
    "selected_highlight": "#FFD700",
    "sidebar_border": "#EEEEEE",
    "wrapper_background": "#FFFFFF"
   },
   "moveMenuLeft": true,
   "nav_menu": {
    "height": "532px",
    "width": "363px"
   },
   "navigate_menu": true,
   "number_sections": false,
   "sideBar": true,
   "threshold": 4,
   "toc_cell": false,
   "toc_position": {
    "height": "737px",
    "left": "0px",
    "right": "1098px",
    "top": "66px",
    "width": "337px"
   },
   "toc_section_display": "block",
   "toc_window_display": true,
   "widenNotebook": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
